Unity - Rigidbody刚体

这篇具有很好参考价值的文章主要介绍了Unity - Rigidbody刚体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MovePosition

1. rigid.MovePosition(targetPosition)        移动到目标位置

调用执行后

        1)rigidbody.position 会立即改变,而transform.position并不会立即生效改变

        2)transform.position 需要等到下一次的FixedUpdate执行完毕后才会生效改变,即可在LateUpdate中打印看见

rigid.position = Vector3.zore;
transform.position = Vector3.zore;
int index = 0;
void Update()
{
    Debug.Log($"1  : T={transform.position}	b={Rigid.position}"); //Vector3.zore|Vector3.zore
    Rigid.MovePosition(Rigid.position + Vector3.right);
	Debug.Log($"2  : T={transform.position}	b={Rigid.position}");//Vector3.zore|new Vector3(1,0,0)
    index = 1
}
void FixedUpdate()
{
    Debug.Log($"1  : T={transform.position}	b={Rigid.position}"); //Vector3.zore|new Vector3(1,0,0)
    index = 2
}

void LateUpdate()
{    
    if(index != 2)
    {
        Debug.Log($"1  : T={transform.position}	b={Rigid.position}"); //Vector3.zore|new Vector3(1,0,0)
    }
    else
    {
        Debug.Log($"1  : T={transform.position}	b={Rigid.position}"); //new Vector3(1,0,0)|new Vector3(1,0,0)
    }

}

        

 Physics.autoSyncTransforms

Physics.autoSyncTransforms = true;

开启后,当使用Rigid.position = xxx时,transform会立即和rigidbody位置同步

否则transform会和rigidbody短暂不同步,需要等到下一次FixedUpdate执行完毕后才同步改变

 collisionDetectionMode

连续检测,防止穿透
Rigid.collisionDetectionMode = CollisionDetectionMode.Continuous;

interpolation 

transform 是否插值移动表现:None(无插值) , 其他选项(插值平滑移动) | 只针对kinematic刚体
Rigid.interpolation = RigidbodyInterpolation.None;

 isKinematic

设置为true,不接收任何力的作用

可以使用MovePosition移动,但是为true时 只能在FixedUpdate中生效,反之Update中也生效
Rigid.isKinematic = true;

Physics.SyncTransforms()

若直接设置transform.position,则需要调用该函数后,rigidbody.position才会同步改变
Physics.SyncTransforms();

freezeRotation 

Rigid.freezeRotation = true

冻结刚体旋转,刚体不会在受力下改变旋转

constraints 

Rigid.constraints         刚体约束

m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.None;无任何约束

m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.FreezeRotation;冻结所有旋转

m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.FreezeRotationX/Y/Z;冻结指定轴旋转

m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.FreezePosition;冻结所有移动

m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.FreezePositionX/Y/Z;冻结指定轴移动

 OnCollisionXXX函数

双方都是 IsTrigger=false

1.Rigidbody与 Rigidbody:

        若双方均为isKinematic=true,则不会触发

        其他情况会触发

OnTriggerXXX函数

双方有一方 IsTrigger=true

1.Rigidbody 与 Rigidbody :

        任何情况均会触发,包括isKinematic=true的情况

2.CharacterController 与 Collider:

        若Collider为IsTrigger=true,则会触发

 地址记录:【Unity笔记】刚体、碰撞器和触发器 - 哔哩哔哩

 IgnoreCollision

 Physics.IgnoreCollision(collider1, collider2, ignore: true);        碰撞忽略

参数1:自身碰撞体

参数2:目标碰撞体

参数3:是否忽略文章来源地址https://www.toymoban.com/news/detail-726029.html

IgnoreLayerCollision

Physics.IgnoreLayerCollision(layer1, layer2, ignore: true);        碰撞层级忽略

参数1:自身碰撞层级

参数2:目标碰撞层级

参数3:是否忽略

到了这里,关于Unity - Rigidbody刚体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二十五章 Unity 刚体Rigidbody

    在物理学中,静止和匀速直线运动是物体的平衡状态,如果给该物体施加某一个力的话,物体的平衡状态就会改变,当然这个真理的前提是理想状态。我们知道在现实世界中,由于重力和摩擦力的存在,任何一个物体都不可能永无止境的运动下去。因此,要想让物体保持运动

    2024年02月06日
    浏览(55)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(77)
  • 使用团结引擎开发Unity 3D射击游戏

           本案例是初级案例,意在引导想使用unity的初级开发者能较快的入门,体验unity开发的方便性和简易性能。       本次我们将使用团结引擎进行开发,帮助想体验团结引擎的入门开发者进行较快的环境熟悉。      本游戏是一个俯视角度的射击游戏。主角始终位于屏幕

    2024年01月19日
    浏览(74)
  • unity物体旋转:RigidBody.AddTorque

    在Unity中让物体旋转的方法有很多,但是如果想让物体旋转得像现实一样有平滑的加速减速惯性那么用AddTorque是一个很好的选择。 Rigidbody.AddTorque方法在2D和3D中都有该方法,但是不太一样,在官方文档中的描述是Rigidbody.AddTorque向刚体添加扭矩,而Rigidbody2D.AddTorque则是在刚体的

    2024年02月12日
    浏览(38)
  • Unity、UE、Cocos游戏开发引擎的区别

    Unity、Unreal Engine(UE)和Cocos引擎是三个常用的游戏开发引擎,它们在功能和特性上有一些区别。以下是它们之间的主要区别: 编程语言:Unity使用C#作为主要的编程语言,开发者可以使用C#脚本进行游戏逻辑编写。Unreal Engine主要使用C++作为编程语言,但也支持蓝图系统,允许

    2024年02月22日
    浏览(64)
  • Unity vs Godot :哪个游戏引擎更适合你?

    游戏引擎的选择对开发过程和最终产品质量有着重大影响。近年来,Godot和Unity这两款引擎受到广泛关注。本文将从多个维度对两者进行比较,以期为开发者提供正确的选择建议。 Godot和Unity都有各自的优势,没有绝对的好坏之分。Godot开源免费,上手简单,更适合2D和小型游戏

    2024年01月23日
    浏览(94)
  • Unity初识Rigidbody2D

    Ridigbody2D: 用于2D 精灵 的 刚体 物理组件。 精灵:2D图形对象,本质是标准图形纹理。 刚体:使对象的行为方式受物理控制,接受力和扭矩行为方式基于施加的作用力。 Rigidbody2D组件的检查器inspector在设置不同身体类型时显示如下: ① 身体类型 : Dynamic(动态):具有可用的

    2024年02月08日
    浏览(43)
  • 30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2024年02月11日
    浏览(71)
  • Unity Physics2D 2d物理引擎游戏 笔记

    2d 材质 里面可以设置 摩擦力 和 弹力 Simulated:是否在当前的物理环境中模拟,取消勾选该框类似于Disable Rigidbody,但使用这个参数更加高效,因为Disable会销毁内部产生的GameObject,而取消勾选Simulated只是禁用。 Kinematic 动力学刚体 动力学刚体不受重力和力的影响,而受用户的

    2023年04月24日
    浏览(123)
  • Unity和UE4两大游戏引擎,你该如何选择?

    目录 游戏引擎 2 —— 难易区别 编程语言 3 —— 游戏产品 UE4制作的游戏产品  Unity制作的游戏产品  产品类型 5 —— 资源商店 6 —— 人才需求 平均薪资 总结      Unity和UE4都是游戏引擎,所谓游戏引擎就是集成了复杂功能的游戏开发软件,他们帮我们实现了复杂的底层逻

    2023年04月08日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包