2017-05-28 2 views
0

imageUnity3D Vektor 3 Teleportieren

Hey Leute!

Ich habe ein Bild angehängt, um meine Erklärung des Problems, das ich habe, zu visualisieren. In meinem Spiel rollt ein grüner Ball über eine endlose Straße und wird von einem gelben Ball gejagt. Um die Straße endlos zu machen, wird der Ball zurück teleportiert (violette Linie auf dem unteren Bild), wenn er eine bestimmte Strecke auf der x-Achse kreuzt (lila Linie auf dem oberen Bild). Ich habe es so gemacht:

if (gameObject.transform.position.x <= -20) { 
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z); 
} 

und es funktioniert völlig in Ordnung.

Wenn der grüne Ball "teleportiert" wird, sollte der gelbe Ball mit dem gleichen Wert teleportiert werden, so dass sich der Abstand zwischen den Kugeln nach dem Teleportieren nicht ändert. Also habe ich einen öffentliches Spielobjekt „Feind“, stellte die gelbe Kugel im Innern des Gegners Feld im Inspektoren und änderte den Code dazu:

if (gameObject.transform.position.x <= -20) { 
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z); 
    enemy.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z); 
} 

Aber wie man auf dem Bild unten sehen kann, die gelbe Kugel wasn Ich bin nicht in derselben Entfernung teleportiert worden. Es scheint so, als ob die Entfernung von ihrem ursprünglichen Startpunkt und nicht von dem Punkt vor dem Teleportieren hinzugefügt wird. Ich hoffe, ihr kennt eine Lösung dafür.

Der gelbe Ball hat ein Skript, um dem Spieler zu folgen, vielleicht muss er damit etwas anfangen?

void Update() 
{ 

    //enemy follows the ball with speed 8 
    transform.LookAt (target); 
    transform.Translate (Vector3.forward * 8 * Time.deltaTime); 

    //fix y-position 
    Vector3 tmp = transform.position; 
    tmp.y = lockedY; 
    transform.position = tmp; 

} 
+0

Können die beiden Kugeln rückwärts gehen? Hast du darüber nachgedacht, Straße statt Teleportation hinzuzufügen? – Hristo

Antwort

0

Sie wollen den Feind 80 Einheiten bewegen, dann müssen Sie den Feind zurück 80 Einheiten bewegen.

enemy.transform.position = new Vector3(Feind.position.x + 80,Feind.position.y,Feind.position.z);

+0

Danke, du hast mich gerettet! : D –