U3D之刚体碰撞
技术概述
入门级的一个小技术,适用于两个或多个对象需要发生碰撞的各种情况,学习原因:经常用到,难点:碰撞检测。
技术详述
刚体
Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。
碰撞体
碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
技术使用中遇到的问题和解决过程
问题:碰撞的检测不能达到预期效果,如反弹,停顿而不是接触后扣血等。
解决:使用触发器来进行接触检测,把物体的碰撞器类型设置为触发类型。然后在物体的检查视图中找到碰撞器组件,将该组件的IsTrigger属性勾选上,这样在游戏物体发生接触的时候就不会有碰撞的效果了,而是会直接穿过去。然后,在CubeCollision脚本组件里面重载三个方法:
// 开始接触
void OnTriggerEnter(Collider collider) {
Debug.Log("开始接触");
}
// 接触结束
void OnTriggerExit(Collider collider) {
Debug.Log("接触结束");
}
// 接触持续中
void OnTriggerStay(Collider collider) {
Debug.Log("接触持续中");
}
总结
必须满足如下三个条件:
1、必须都要有碰撞器组件(Collider)。
2、必须有一个物体带刚体组件,并且处于运动状体中(包括主动运动去撞击别人和在运动过程中被别人撞击)。
3、两个碰撞器中至少有一个开启了IsTrigger。
注:本人也是刚入门,如有错误或者遗漏,欢迎指出。
参考文献、参考博客
标题:“Unity3D之碰撞体,刚体”,作者:RunningSnail,链接:https://www.cnblogs.com/tgycoder/p/4847409.html