2016-06-29 14 views
0

Ich arbeite an einem 2D TopDown Spiel in Unity 5. Die Kollision funktioniert überhaupt nicht. Der Spieler und das Hindernis haben beide eine 2D Collider und sie sind nicht Trigger. Der Spieler hat 2D Starrkörper mit Kinematic Satz falsche, Schwereskala gleich Null . Vielleicht hat der Bewegungscode etwas damit zu tun. Der Code ist ein bisschen zu lang, so werde ich Ihnen zeigen, den Code für die Bewegung nach oben:Unity 2D-C# - Collider nicht

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

    if (movingDown == false) { 

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

    movingUp = false; 
} 

/.../

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

Es wird immer den Wert der Position einstellen, so lange wie Sie die Auf-Taste drücken. Gibt es eine Möglichkeit, das zu beheben?

+0

Auf jeden Fall müssen diese Sie lösen Ihre überprüfen Physik Einstellungen im Bearbeiten> Projekteinstellungen> Physik Min. Durchdringen für Penalty oder Solver Iteration Ihr Problem beheben zählen kann. ich weiß, dass Sie verwenden „isKinematic = false“. Allerdings (für zukünftige Referenzen), wenn Sie zwei isKinematic Elemente der Kollision Erkennung wird nicht funktionieren. – Cabrra

Antwort

1

Ich denke, dass das Problem ist, dass Sie die Position direkt einstellen. Bei jedem Bild sagen Sie also genau, wo das Objekt sein sollte, welches die Position überschreibt, die aus der Kollision berechnet wird.

Um dies zu beheben, müssen Sie Ihre Bewegungscode ändern, um eine Kraft zu Ihrem Starrkörper aufzuwerten und die Position unberührt (siehe Starrkörper doc verlassen und Funktion AddForce (https://docs.unity3d.com/ScriptReference/Rigidbody.html)

+0

ich versuchte AddForce Zugabe, aber der Spieler würde schneller und schneller, und es wäre wie sein Fuß auf Eis suchen. Also habe ich versucht, mit der Geschwindigkeit variabel wie diese rb.velocity = new Vector3 (x, y, 0) Danke, dass du mir das erzählt hast :) – DzoniGames

Verwandte Themen