Unity碰撞檢測。
歡迎來到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 )
// 碰撞接觸的那一幀被呼叫
void OnCollisionEnter(Collision collision)
{
Debug.Log("enter");
Debug.Log(collision.gameObject.name);
}
// 碰撞接觸的每幀都被呼叫
void OnCollisionStay(Collision collision)
{
Debug.Log("Stay");
}
// 碰撞結束被呼叫
void OnCollisionExit(Collision collision)
{
Debug.Log("Exit");
}