在unity中,我们经常需要检测两个或多个物体之间是否发生碰撞,以及碰撞之后该如何处理等问题。下面我将总结一下自己在实践过程中遇到的一些问题,方便自己以后查阅,也希望能对帮助后来者有所帮助。
首先我们需要明确几个基本概念:
- 碰撞器:可以简单的理解为添加在游戏对象身上的一个组件。当然了,碰撞器有很多种,常用的有 Box Collider,Sphere Collider,Capsule Collider,Mesh Collider等。
- 触发器:可以理解为碰撞器组件中的一个属性(IsTrigger),当我们在检视面板(Inspector)的碰撞器组件中勾选了IsTrigger属性,就是用了触发器。
发生碰撞的必要条件:
1. 参与碰撞的物体身上必须都添加碰撞器(Collider)组件
2. 其中一个物体还必须添加刚体组件(Rigidbody),添加了这个组件的游戏对象可以接受外力和扭矩力,并且像真实的物体一样接受摩擦力和重力,还可以与其他物体发生相互碰撞。通常我们将Rigidbody添加给移动的物体
刚体组件的具体参数:
- mass 质量,以千克计算。
- drag 空气阻力,当物体受力运动时空气的阻力,以牛顿计算。
- angular drag 空气角阻力