欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。为了完整的了解这两种方式,我们必须理解以下概念:
(一)碰撞器是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须到GameObjecet身上。
(二)所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
(三)给主角添加刚体(Rigidbody)组件,并且取消刚体组件的重力选项UseGravity。
一、触发:
1、当进入触发器:MonoBehaviour.OnTriggerEnter( Collider other )
2、当退出触发器:MonoBehaviour.OnTriggerExit( Collider other )
3、当逗留触发器:MonoBehaviour.OnTriggerStay( Collider other )
二、触发信息检测:
//触发接触的那一帧被调用
void OnTriggerEnter(Collider other) {
Debug.Log("enter");
Debug.Log(other.gameObject.name);
}
//触发接触的每帧都被调用
void OnTriggerStay(Collider other) {
Debug.Log("Stay");
}
// 触发结束被调用
void OnTriggerExit(Collider other) {
Debug.Log("Exit");
}
三、碰撞信息检测
1、当进入碰撞器:MonoBehaviour.OnCollisionEnter( Collision collisionInfo )
2、当退出碰撞器:MonoBehaviour.OnCollisionExit( Collision collisionInfo )
3、当逗留碰撞器:MonoBehaviour.OnCollisionStay( Collision collisionInfo )
四、忽略碰撞
有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞
- public Transform ball;
- void Start()
- {
- Physics.IgnoreCollision(ball.collider, this.collider);
- }