在“Project”面板中單擊“Create”旁邊的小三角,選擇“javascript”建立一個名為“collision”的js檔案。雙擊它,系統啟動Monodevelop來編輯js檔案。
清除裡面預設建立的代碼。寫上。
function OnCollisionEnter(obj:Collision)
{
Debug.Log(obj.gameObject.name);
}
onCollisionEnter函數解釋:這個函數是在被綁定的物體與其他物體發生碰撞的時候被調用。
obj參數解釋:被撞的物體參數,類型是Collision,在本例中就是“地板”.攜帶變數gameObject,是我們碰撞的物體name,就是我們為地板設定的name。
將指令檔拖到球上實現綁定:
這步很容易操作,在"Project"面板中選中collision指令碼,按住滑鼠左鍵不放,直接拖入“Hierarchie”面板中,放到立方體上,鬆開滑鼠即完成綁定。
點頂部的小三角運行程式:
程式運行結果,當球與地板碰撞時,unity3d底部狀態列會輸出地板的name
搞定。
OnControllerColliderHit(),這個是用於角色碰撞的,物體如果附加了Charactor Controller(Unity內建的用於角色控制的指令碼)則使用這個函數檢測碰撞,這是不需要加剛體的。一般的剛體之間碰撞使用OnCollisionEnter(),範圍觸發用OnTriggerEnter(),如果你是讓兩個CUBE碰撞,請確保其中一個附加了RigidBody,
collision是個變數,通過它可以獲得你所碰撞的目標的屬性以及碰撞點資訊和相對速度,如:collision.collider.某個組件或指令碼。 void OnCollisionEnter(Collision collision){if(collision.collider.tag=="enemy")//tag是物體的標籤,相當於物體的類別名稱。在每一個物體的元件匣(也就是加指令碼的那個地區)的最上面可以找到,預設的是UnTagged,也就是沒有標籤,你找找,然後點擊會出現一個下拉式清單,預設的已有幾個Tag,你也可以加自訂的,點擊下拉式清單最下方的Add
Tag就可以加Tag,最後選擇一個Tag作為物體的名稱就可以了。{Destroy(collision.collider.gameObject);//如果檢測到對方是敵人,則消滅對方。}}