茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1674948 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
Yomi&Kagura_00057.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2015/3/31 7:15:34

Unity3D碰撞檢測及Trigger觸發器的使用及注意事項

首先新建一個Cube,其本身就已自帶了碰撞器Collider,如圖

要使用Trigger檢測物體進入,則需要勾選Is Trigger選項
碰撞檢測觸發器Trigger 有別於碰撞檢測器 Collision,其可以不受物理效果影響,一些可穿透區域的碰撞檢測,可以使用Trigger來進行碰撞檢測
常用方法如下:
OnTriggerEnter 進入時
OnTriggerExit 離開時
OnTriggerStay 處於時

同上碰撞檢測器 Collision 也有3個方法:
OnCollisionEnter
OnCollisionExit
OnCollisionStay

這裡我們需要為跑道添加一個終點撞線的機制,所以使用可穿透的碰撞檢測觸發器Trigger

代碼如下:

1
2
3
4
5
    void OnTriggerEnter (Collider collider )
    {
        print
(collider . gameObject . name + ":" + Time . time ) ;
     
    }

OnTriggerEnter傳入的參數必須為Collider,故能觸發該函數的對象必須具有Collider組建。這裡我們用的是角色控制器Character Controller 自帶了Collider組建
此時每當有角色撞線時即會列印角色名及系統時間

接下來我們使用碰撞檢測器 Collision 來進行一個碰撞檢測
首先取消被撞擊對像上的Is Trigger選項,並添加腳本代碼如下

1
2
3
4
5
    void OnCollisionEnter (Collision collision )

    {
        print (collision . gameObject . name + ":" + Time . time ) ;
     
    }

此時用例為兩個cube,需要注意的是,撞擊者cube均要添加剛體組件,否則無效,Trigger同理。
同時cube的長寬高,不能為0,否則無法觸發。
另一問題是角色控制器的膠囊體與Cube Collider碰撞不激活碰撞檢測,但是手動往前推動一下就會觸發,該問題目前尚未解決,有知道的朋友歡迎留言討論。

本篇疑問尚且留存,待解決後更正。

BeiTown
2013.03.09


原文出處:BeiTown's Coder 编码之源 » Unity3D碰撞检测及Trigger触发器的使用及注意事项
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|