2016-04-07 6 views
0

Ich habe dieses Objekt, das vorwärts geht, wenn es zu einer bestimmten x-Position kommt, sollte es aufhören, um 180 Grad drehen und zurück gehen, dann, wenn es zu der Position kommt es dreht sich um 180 Grad und läuft wieder vorwärts. DieseObjekt, vorwärts zu gehen, 180 zu drehen und zurückzugehen

ist, wie ich versuche, ihn zu Fuß zu bekommen und drehen:

public float Speed = 1f; 
public float TurnSpeed = 1f; 

void Start() { 
    transform.position = new Vector3(-10, 0, -79); 
} 

void Update() { 
    transform.Translate(new Vector3(0, 0, 1) * Speed * Time.deltaTime); 
    if (transform.position.x < -1) 
    { 
     transform.Translate(new Vector3(0, 0, 0)); 
     transform.Rotate(0, 180 * Time.deltaTime, 0); 
    } 
} 

Er hält zu bewegen und nicht nicht sicher zu stoppen, warum jede mögliche Hilfe?

+0

gibt es eine Schleife in Ihrem Programm, das dieses verursachen kann? –

+0

Ich bin mir nicht sicher, es sollte vorwärts gehen und wenn die x-Position -1 erreicht, sollte es aufhören und drehen, ich bin sehr neu in der Einheit btw – RexDough

+0

Warum nicht Wegpunkte auf deiner Karte setzen, damit Wachen patrouillieren können? Was ich annehmen will. Alle Ihre Wachen können eine Reihe von Wegpunkten haben und von einem zum anderen gehen (Trigger-Collider), mit Wegfindung und AddForce (viel gesünder als "teleportieren" den Typ von einem Ort zum anderen, zum Beispiel mit der Bewegungsposition). Dann musst du nur transformieren. LookAt [Wegpunkt Spielobjekt] und los gehts. Wenn du bei den Vektoren bleiben willst, warum gehst du nicht zu Vector3.MoveTowards statt zu den hässlichen Sachen, die du jetzt versuchst? BTW was hast du bisher probiert? –

Antwort

1

Ich bin neu in den Inhalt, aber jedes Mal, wenn Sie aktualisieren - Ihre erste Zeile sagt:

Verschieben foreward von einem

Sie müssen dies umgekehrt nach dem Wendepunkt erreicht, vielleicht so:

void Update() { 
    static boolean direction; 
    if (direction) 
     transform.Translate(new Vector3(0, 0, 1) * Speed * Time.deltaTime); 
    else 
     transform.Translate(new Vector3(0, 0, -1) * Speed * Time.deltaTime); 

    if (transform.position.x < -1) //or whenever you want to turn 
     direction = !direction; 
} 

vergessen Sie nicht, sich zu drehen oder zu Fuß einfach nach hinten;)

+0

was ist TURNINGPOINT – RexDough

+0

@RexDough Fügen Sie Ihre Koordinaten oder etwas anderes dort - nicht sicher, wann Sie zurücklaufen möchten. Du benutztest: 'if (transform.position.x <-1)' – Skandix

+0

dw das RexDough

Verwandte Themen