碰撞器分类:
盒型碰撞器(Box Collider),球形碰撞器(Sphere Collider),胶囊碰撞器(Capsule Collider),网格碰撞器(Mesh Collider),车轮碰撞器(Wheel Collider)等;
效率比较:
球形碰撞器>胶囊碰撞器>盒型碰撞器>网格碰撞器
碰撞的必备条件:
1、两个物体要有碰撞器
2、必须要有一个物体有刚体
物理材质:
Dynamic Friction:动态摩擦力。游戏对象运动时候的摩擦力,取值在0~1之间。
Static Friction:静态摩擦力。游戏对象放置表面时候的摩擦力,取值在0~1之间。值为0时表面类似冰的效果。
Bounciness:反弹,该参数用于设置游戏对象的反弹,值为0时表示没有反弹,值为1时表示能量没有损失的反弹,会一直反弹
Friction combine:摩擦力组合,该参数用于设置游戏对象摩擦力的组合方式。
Bounce combine:反弹组合,用于设置游戏对象反弹力的组合,反弹力组合提供了与摩擦力类似的选项。
碰撞检测:
能发生碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。
一、碰撞器是一群组件,包含了多个种类,比如:Box Collider, Capsule Collider等,这些碰撞器应用的场合不同,但必须加到GameObject身上。
二、所谓触发器,只需要在检视面板中碰撞器组件中勾选is Trigger属性选择框。
三、给游戏对象添加刚体(Rigdbody)组件,并且取消刚体组件的重力选项UseGravity。
碰撞器的三种方法:
//碰撞接触的那一帧被调用
void OnCollisionEnter(Collision collision) {
print(collision.gameObject.name); }
// 碰撞接触的每帧都被调用
void OnCollisionStay(Collision collision) {
print(collision.gameObject.name); }
// 碰撞结束被调用
void OnCollisionExit(Collision collision) {
print(collision.gameObject.name); }
触发器的三种方法:触发器可以穿透,所以把重力去掉。
// 触发接触的那一帧被调用
void OnTriggerEnter(Collider other) {
print(other.gameObject.name);
}
//触发接触的每帧都被调用
void OnTriggerStay(Collider other) {
print(other.gameObject.name);
}
// 触发结束被调用
void OnTriggerExit(Collider other) {
print(other.gameObject.name);
}