本文主要是介绍Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Unity物理引擎中的碰撞
- 简介
- 触发条件
- 角色控制器
- 布料
- 关节
简介
在Unity3D中,检测碰撞发生的方式有两种:
- 利用碰撞体
- 利用触发器
在很多游戏引擎或工具中都有触发器,他被用来触发事件
碰撞体与触发器的区别在于:
- 碰撞体是触发器的载体
- 触发器只是碰撞体的一个属性
如果既想要检测到物理的接触,又不想让碰撞检测影响物体的移动,或者要检测一个物体是否经过控件中的某个区域,这是就可以用到触发器
例如:碰撞体适合模拟汽车被撞飞、皮球掉在地上又反弹的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果
触发条件
在unity3D中要实现触发检测,需要满足以下条件:
1、两个物体都具有Collider组件
2、至少有一个物体拥有Rigidbody组件
3、至少有一个物体的Collider组件勾选了Is Trigger
触发三阶段:
MonoBehaviour.OnTriggerEnter:当进入触发器时触发
MonoBehaviour.OnTriggerExit:当退出触发器时触发
MonoBehaviour.OnTriggerStay:当逗留在触发器中触发
角色控制器
我们可以使用刚体控制游戏对象行为,刚体会受到里的作用,在与其他刚体发生碰撞的时候,很可能被撞飞,但是在游戏当中大多数时候,我们对于任务角色是不希望产生这种被撞飞的效果的。另外我们在很多时候其实不需要游戏对象按照显示的规律运动,比如说停止运动我们需要角色立即停止运动,如果用刚体去控制物体行为的话,没有办法很好的满足这种需求。
比如,在FPS游戏中,如CS,任务之间是有碰撞,但是不会被碰撞撞飞,停止运动时也不会受到惯性作用,因此,为了更好的满足这样的需求,需要用到角色控制器(Character Controller)。
布料
在游戏中为了游戏的真实感,模拟出更逼真生动的物理效果,例如衣服,头发的摆动等,可以通过美术制作的动画来完成,但是这种制作动画所完成的效果,缺点明显:
- 效果不够真是,动画固定,无法响应不同情况的动态变化。
- 事件成本搞,比如风格大小差别比较大的服装,那么可能需要重新修改模型以及动作。
因此,出现了布料系统,布料系统可以帮助我们更好的去模拟这些效果,在Unity中布料的解决方案有很多,Unity自带的Cloth Component为我们提供了简单实用的封装。
另外,Asset Store上有很多插件如Magica Cloth,Dynamic Bone, Swing Bone, PhysicsBone。如果想要实现更好更精美的效果,可以借助插件来实现。
关节
可以使用关节组件将一个刚体对象附加到另外一个刚体对象或附加到空间中的固定点。关节可活动,关节连接可破坏。
Hinge Joint 铰链关节
1、铰链关节 (Hinge Joint) 将两个刚体组合在一起,对刚体进行约束,让它们就像通过铰链连接一样移动。
2、铰链关节非常适合用于门,但也可用于模拟链条、钟摆等对象
Fixed Joint 固定关节
1、 固定关节 (Fixed Joint) 将对象的移动限制为依赖于另一个对象。这有点类似于管控 (Parenting),但是实现的方式是通过物理系统而不是变换 (Transform) 层级视图。
2、使用固定关节的最佳场合是在希望对象可以轻松相互分离时,或者在没有管控情况下连接两个对象的移动。
Spring Joint 弹簧关节
1、弹簧关节 (Spring Joint) 将两个刚体连接在一起,但允许两者之间的距离改变,就好像它们通过弹簧连接一样
Character Joint 角色关节
1、角色关节 (Character Joint) 主要用于布娃娃效果。此类关节是延长的球窝关节,可在每个轴上限制该关节
Configurable Joint 可配置关节
1、可配置关节 (Configurable Joint) 包含其他关节类型的所有功能,并提供更强大的角色移动控制。
2、当您想要自定义布娃娃的运动并对角色强制实施某些姿势时,这种关节特别有用。
3、使用可配置关节还可以将关节修改为您自行设计的高度专业化关节
这篇关于Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!