2016-11-08 3 views
1

Ich arbeite an einer Spiele-App mit Unity. Ich habe ein Problem, wenn es darum geht, ein GameObject zu bewegen.Verschieben eines Objekts mit vector3.MoveToward

Darüber mein game, wenn die player swipes up mit seiner device, die GameObject moves aus ein point A zu B und wenn er swipes down, es goes von B zu A.

I wrote ein C# Skript mit die Spiellogik, aber ich habe ein Problem, wenn es darum geht.

Das Problem ist, dass die Gameobject nach B sofort von A bewegt

Hier ist der Code Zeile ich nutzen, um meine Gameobject zu bewegen:

transform.localPosition = Vector3.MoveTowards (PositionA,PositionB,Time.deltaTime * speed); 

speed ist ein Schwimmer mit einem Wert von 10.0f .

Ich möchte, dass mein GameObject sich langsam zu Punkt A nach B bewegt. Und trotz der Änderungen an der Geschwindigkeit ändert sich nichts, es bewegt sich immer noch sofort.

Wie kann ich das Problem lösen? (Ich versuchte mit Vector3.Lerp und ich hatte die gleichen Ergebnisse).

Antwort

3

Vector3.MoveTowards nimmt die aktuelle Position, die Zielposition und den Schritt, aber es scheint, als ob das erste Argument hier der Ursprung der Bewegung ist und nicht die aktuelle Position. Normalerweise würde man diese etwas tun, in Ihrem Update():

transform.localPosition = Vector3.MoveTowards (transform.localPosition, PositionB, Time.deltaTime * speed);

mit der aktuellen Position als erstes Argument.

+0

wenn ich Ihre Linie geschrieben, es bewegt sich sanft auf den ersten und dann gehen sofort in die Position B (bei 50% der Strecke). Auch wenn ich nach unten wische, möchte ich nicht zu Punkt A zurückkehren. –

+0

@ Ophélia Hm? Ich habe Unity nicht installiert, daher kann ich momentan nicht testen, aber es sollte funktionieren. Änderst du die Transformationsposition woanders oder etwas? Und um sich in Richtung A zu bewegen, müssten Sie das Ziel ändern, auf das es sich bewegt. – Koneke

+1

es funktioniert jetzt! :) Vielen Dank :) –

4

Hier ist, wie MoveTowards zu verwenden:

void Update() 
{ 
    float step = speed * Time.deltaTime; 
    transform.position = Vector3.MoveTowards(transform.position, PositionB, step); 
} 

LearnMore

+0

vielen Dank! :) mit deinem Weg, es funktioniert auch :) –

Verwandte Themen