2016-06-29 61 views
0

我工作的一個2D自上而下遊戲團結5。碰撞根本不起作用。 玩家和障礙都有一個2D對撞機他們不是觸發器。該播放器具有2D剛體運動學集到重力規模等於。也許移動代碼與它有關。 的代碼是長了一點,所以我就告訴你了動起來的代碼:團結2D C# - 對撞機工作不

if (Input.GetAxis ("Up") > 0) { 

    if (movingDown == false) { 

     posY += speed * Time.deltaTime; 
     movingUp = true; 
    } 
} else { 

    movingUp = false; 
} 

/.../

transform.position = new Vector3 (posX, posY, 0); 

它總是設置位置的值,只要當你按下向上按鈕。有沒有辦法來解決這個問題?

+0

無論如何要解決這一點,你需要檢查你的我知道你使用的是「isKinematic = false」,但是(對於未來的參考),如果你有兩個isKinematic元素,那麼collision(碰撞)或collision(碰撞)檢測將無法工作 – Cabrra

回答

1

我認爲問題是你直接設置位置。因此,在每一幀,你都在告訴統一的對象應該是什麼,這將覆蓋從碰撞中計算出的位置。

要解決這個問題,你需要修改你的移動代碼的一份力量添加到您的剛體和離開的位置不變(見剛體文檔,以及功能AddForce(https://docs.unity3d.com/ScriptReference/Rigidbody.html

+0

我嘗試添加AddForce,但播放器會更快,更快,看起來像他在冰上行走,所以我試着用速度變量像這樣rb.velocity = new Vector3(x,y,0 );所以謝謝你對我說:) – DzoniGames