Jump to content
Unity Insider Forum

Geschwindigkeit eines Objekts relativ zum Winkel (gelöst)


Jomnitech

Recommended Posts

Hallo zusammen

Ich möchte gerne die Geschwindigkeit eines Objekt berechnen. Dafür verwende ich momentan folgendes:
 

        velocity = ( new Vector2(transform.localPosition.x,transform.localPosition.y) - previous) / Time.deltaTime;
        previous = new Vector2(transform.localPosition.x,transform.localPosition.y);

Mein Objekt wir mittels transform.position an ein anderes Objekt angeheftet. Klapt soweit alles ganz gut. Nun möchte ich aber, dass sich die Geschwindigkeit auch richtig zum verhältnis der Achsen des Objekts auswirkt. Also wenn ich das Objekt z.B. um 90° drehe, die Geschwindigkeit auch entsprechend auf der XY Achse richtig berechnet wird.

 

Kann mir jemand einen Schubs in die richtige Richtung geben wie ich das anstelle?

Edit:
Noch zur Erläuterung. In Video sieht man rechts im Inspektor den Vector 2 Velocity. Dieser ändert sich auf der x Achse wenn sich der Character nach links und rechts bewegt. Nun sollte aber wenn ich das Objekt um 90° drehe, der Y Wert ändern statt dem X Wert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst dann nicht einzelne Achsen bearbeiten, sondern die gesamte Distanz zwischen vor und jetzt Zustand berechnen, das geht ziemlich easy.

velocity = Vector2.Distance( new Vector2(transform.position.x, transform.position.y), previous) / Time.deltaTime;
previous = new Vector2(transform.position.x, transform.position.y);

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

@TheOnlyOne

Danke für deine Antwort. Ich sollte aber differenzieren können ob die Geschwindigkeit auf der X oder Y Achse ist.
Ich habe das Script mal auf eine Achse  reduziert und das Problem bleibt bestehend. Wenn ich das Objekt drehe, so das die X Achse nicht mehr nach rechts, sondern nach unten zeigt, bekomme ich immer noch den Wert von der links/rechts bewegung (wo jetzt eigentlich Y wäre) und keinen Wert bei hoch/runter bewegungen. Es müsste so sein, dass er die Rotation mitnimmt und sich merkt in welche richtung die X zbw. Y Achse gerade schaut. Also sowas wie Positionsänderung relativ zur Rotation.

Eigentlich so wie man es in der Scene sieht, roter Pfeil und gelber Pfeil. Wenn ich das Objekt mit dem Roten Pfeil bewegen, möchte ich immer diese Bewegungsgeschwindigkeit haben, egal wie das Objekt auf der z Achse gedreht ist. Das gleiche mit dem gelben Pfeil.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke ich habs gelöst, " transform.InverseTransformDirection" war die Funktion der Begierde.

Falls mal jemand das Gleiche sucht, das Ganze sieht so aus:

        velocity = (transform.position - previous) / Time.deltaTime;
        previous = transform.position;

        velOut = transform.InverseTransformDirection(velocity);

-closed-

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...