2013-02-08 92 views
0

我已經創建了兩個簡單的動畫和應用簡單膠囊對撞機有fricitionless material.Now當這些網格相互然後調用的函數和碰撞其給我一個網格碰撞是發生在控制檯上的消息。但當collsion發生,玩家將無法移動,就像真實的人being.So我怎樣才能移動時第二個玩家打it..I寫了這個代碼,碰撞檢測運動通過腳本

function OnCollisionEnter(Bam : Collision) 
    { 
    if(Bam.collider.gameObject.name == "cube") 
    { 
     print("cube collision"); 
    } 
    if(Bam.collider.gameObject.name=="Terrain") 
    { 
    print("wall collision"); 
    } 
    if(Bam.collider.gameObject.name=="simple_anim") 
    { 
    print("with the mesh"); 
    } 
     } 
+0

所以當兩個玩家相撞時,你會從上面的代碼中得到一個打印?或者換句話說:您提供的代碼有效嗎?你能更精確地定義球員在「像現實人類一樣移動時應該做什麼」嗎? – Joetjah

+0

邑此代碼的工作細...但我想,當我的一個球員做出拳打對方球員,然後受害人的球員應該表現出像通過一些點點移動的效果就像其他視頻遊戲怎麼做?我怎樣才能做到這一點??? –

回答

1

如果我理解正確的球員,當你打另一個球員時,你會喜歡擊退嗎?如果是這樣,你可以試試這個腳本:

var velBack : float = 15; 
function OnTriggerEnter(col:Collider) { 
    if (col.tag == "Player") 
    { 
     dir = (col.transform.position - transform.position).normalized; 
     var charMotor = col.GetComponent(CharacterMotor); 
     charMotor.SetVelocity(dir*velBack); 
    } 
} 

對於Collission:

var velBack : float = 15; 
function OnTriggerEnter(hit : ControllerColliderHit) { 
    if (hit.gameObject.tag == "Player") 
    { 
     dir = (hit.gameObject.transform.position - transform.position).normalized; 
     var charMotor = hit.gameObject.GetComponent(CharacterMotor); 
     charMotor.SetVelocity(dir*velBack); 
    } 
} 

確保您設置的對象的標籤的權利。

+0

是的,你是對的,但我沒有使用onTriggerEnter我使用onCollisionEnter功能,那麼在如果condtion我與whome檢查選手發生碰撞,其給我的錯誤在CharacterMoter .. –

+0

嘿嘿,試試編輯的代碼。我創建它沒有測試(不能至少4小時),所以它可能不完全正確...... – Joetjah

+0

我沒有使用任何控制器眼下......爲此,我大概的事情有必要第三人控制器..不是嗎? –