
Unity 中实际上有两个独立的物理引擎:一个用于 3D 物理,另一个用于 2D 物理。两个引擎的主要概念是相同的,但是它们是使用不同的组件来实现的。例如,刚体和刚体 2D。物理系统主要由以下几部分组成:刚体、碰撞器、触发器、关节、角色控制器。
官方文件:
01Rigidbody(刚体)/ Rigidbody2D(二维刚体)
在使用Unity时,如果想让GO有重力、碰撞反馈等功能unity中角色控制器碰撞处理,就需要添加一个组件Rigidbody。由于组件替换了自身的运动,因此不应使用它来通过 Transform 改变位置或旋转;相反,应使用 Forces 来推动 GO 并让物理引擎计算结果。
Rigidbody 组件有一个 Is Kinematic 属性,可以去掉引擎的控制,这样 GO 的运动就可以通过脚本来控制。注意:尽量不要用脚本来控制这个属性的开关。
休眠:当刚体的速度远低于设定的最小线速度时,物理引擎会认为它进入休眠状态。此时,GO 直到收到信号才会再次移动。这种模式意味着处理器不会花时间更新刚体状态。您可以使用 WakeUp 函数来唤醒游戏对象。
02Colliders(对撞机)
Colliders 组件定义了用于物理碰撞的对象的形状。它不需要精确地拟合 GO 网格形状;事实上,大致相似在游戏中效率更高。
Unity 中最简单的碰撞器:Box Collider、Sphere Collider、Capsule Collider、Wheel Collider 和 Terrain Collider;2D 碰撞器:Collider 2D 和 Circle Collider 2D。
有时需要以组合的形式附加到对象上。这种形式可以保持处理器开销较低,同时也增加了一定的灵活性;但它们的父对象上应该只有一个 Rigidbody 组件。组合碰撞器不能满足我们的需求,所以需要Mesh Collider;它可以准确匹配物体的网格形状。但是不要经常使用它,它对性能要求很高。当需要碰撞检测时,可以设置为Convex,一般用于几何图形上。物体可以加入碰撞器(没有刚体),但一般物体是静态的。
此外,我们可以在碰撞中设置物理材质。
当物体相互碰撞时,物体的表面会模拟其上材料的属性,如冰块、篮球等;物体的摩擦系数和弹性系数可以用物理材料配置。
03Triggers(触发器)
通过脚本可以通过OnCollisionEnter开始检测碰撞何时发生,也可以通过修改碰撞器上的Is Trigger来启动是否需要进行碰撞检测。启动后,将允许碰撞对象通过。通过时会调用对象脚本的OnTriggerEnter函数:
Is Trigger = falseOnCollisionEnter //碰撞中第一次调用OnCollisionStay //保持碰撞时调用OnColliosionExit //Is Trigger = trueOnTriggerEnter 碰撞退出时调用 //进入触发器OnTriggerStay //保持触发器OnTriggerExit //离开触发器
向右滑动查看完整代码
重点说明
碰撞触发函数有两种主要类型,一种用于碰撞器,另一种用于触发器。每个类别有三种类型,即进入、保持和离开。
OnTriggerEnter、OnTriggerStay、OnTriggerExit 为触发消息,参数为 Collider。
OnCollisionEnter、OnCollisionStay、OnCollisionExit为碰撞消息,参数为Collision。
我们来看看各种情况的触发条件:
首先,让我解释一下碰撞器的类型。
静态碰撞器:静态碰撞器。有碰撞器,没有刚体,也没有触发器。
刚体对撞机:刚体对撞机。有碰撞器,有刚体,没有触发器
Kinematic Rigidbody Collider:运动学刚体。有碰撞器,有刚体,刚体是运动学的,没有触发器。
静态触发器碰撞器:静态触发器。有碰撞器,没有刚体,有触发器。
刚体触发器碰撞器:刚体触发器碰撞器。有对撞机,有刚体,有触发器。
运动刚体触发器碰撞器:运动刚体触发器碰撞器。有对撞机,有刚体,刚体是运动学,还有触发器。
04关节
您可以使用各种关节组件来链接两个对象,例如一个对象围绕另一个静态对象旋转。您还可以使效果类似于弹簧和绳索。特殊效果:当施加的力大于该值时,可以设置一个关节断开。可以在关节之间产生驱动力unity中角色控制器碰撞处理,使其自动运动。
05 角色控制器
为第一人称或第三人称游戏中的角色制作基于碰撞的物理。不能通过静态碰撞物体;您可以使用它来设置对象的速度和方向等。
06Physics Debug Visualization(可视化物理调试工具)
可视化物理调试可以让您快速检查场景中的碰撞几何体并分析常见的物理场景。它提供了哪些游戏对象应该和不应该相互碰撞的可视化。当场景中有许多碰撞体,或者渲染和碰撞网格不同步时,这尤其有用。
文件链接:
最后小编特别推荐一些其他大神分享的内容。
[1] Unity官方教程物理系统系列总结帖
[2] Unity2019发布新的Unity Physics Collider(新物理系统)
-喜欢这篇文章,关注博主-
如果你喜欢这篇文章,可以在unity.cn官网或者Unity Connect App搜索关键词“物理系统第一知识”找到这篇文章。也可以收藏起来慢慢学习。
想让更多人看到你的创意吗?赶快加入Unity社区,在社区分享你的经验,还有机会获得Unity官方推荐!
博客发布入口:unity.cn/articles-“写一篇文章”
点击关键词
获取更多信息
统一产品服务:
游戏领域-| | | | | |
XR场-|
影视娱乐领域——
工业领域(ATM、AEC)-
团结教育-| 创作者
团结人才联盟-
Unity技术简明扼要:
[1]
[2]
[3]
[4]
[5]
Unity官方微信
第一时间了解Unity引擎趋势,学习最新开发技巧
每一次“看见”都是我们前进的动力
请登录后发表评论
注册
社交帐号登录