2012-02-28 69 views
1

我想讓第一人稱控制器與多維數據集相撞。立方體和控制器都應用了一個剛體,其中Kinematic設置爲false,它們在物理上發生碰撞,但是我的功能都沒有被調用。 (我已經包含了所有我們試圖使用的功能。)Unity3D第一人稱控制器碰撞檢測

我有第二個配置爲觸發器的立方體,它可以工作。我的講師和我自己都不知道爲什麼它不起作用。

應用到立方體的代碼如下:

var green : Material; 

function OnControllerColliderHit() { 
    print("OnControllerColliderHit"); 
    this.gameObject.renderer.material = green; 
} 

function OnCollisionEnter(){ 
    print("OnCollsion"); 
    this.gameObject.renderer.material = green; 
} 

function OnCollisionStay(){ 
    print("OnCollsionStay"); 
    this.gameObject.renderer.material = green; 
} 

function OnTriggerEnter(){ 
    print("OnTriggerEnter"); 
    this.gameObject.renderer.material = green; 
} 

這裏是我的項目設置的截圖:http://i.stack.imgur.com/Y4HED.png

此外,我在Windows版本的Unity得到這個問題,我已經創建了一個新的項目,在兩個時間都這樣做。

** 編輯: **我忘了提及的是,函數被調用如果立方體打別的(如平面,如果多維數據集的重心已開啓),這使我相信,有什麼我m從第一人控制器失蹤。

回答

2

,我發現我的問題。我需要爲第一人稱對撞機添加膠囊碰撞器。它需要被添加,而不是被替換,因爲其中一個腳本依賴於另一個腳本,這在第二個想法上沒有完成它的工作。

膠囊對撞機需要比控制器稍大一點,而立方體的剛體碰撞檢測必須設置爲連續離散。

可能不是最好的解決方案,但它的工作原理。

http://i.stack.imgur.com/Ii8Ru.png

1

的碰撞參數丟失,在JavaScript嘗試:

function OnCollisionEnter(collision : Collision) { 
+0

如果我是使用下面的函數,它仍然沒有檢測到衝突: '函數OnCollisionEnter(碰撞:碰撞){ 打印(collision.gameObject.name); }' 我沒有放入參數,因爲我不打算在函數本身中使用它們。 另外,我正在尋找這個網站的答覆煩人的方法。我似乎只能使用內聯代碼方法,輸入提交答覆,雙空間沒有製作一個新行,並且四個空格不能創建代碼塊:/ – grayatrox 2012-02-29 02:05:32

+0

令人驚訝的是,我從來不使用JS,而是使用C#。 如果我在C#的OnTriggerEnter版本中省略參數,它肯定不會被調用。 – Kay 2012-02-29 08:21:56