C# / Unity: Wie macht man ein Player Movement Script, bei dem der Charakter sich in die Richtung bewegt, in die er schaut?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mit Transform.forward (Unity Scripting API) bekommst du die "Vorwärts"-Richtung eines Objekts, indem die Rotation des Objekts berücksichtigt wird. Wenn du diesen Vektor umdrehst, dann hast du die Richtung, in die sich dein Charakter bewegen soll.

Damit das so funktioniert, wie du dir das vorstellst, muss aber der Charakter mit der Kameradrehung synchronisiert werden. Wo die Kamera hinschaut, da muss auch der Charakter hinschauen.

Alternativ, wenn du deinen Charakter nicht permanent in die Richtung drehen möchtest, in die die Kamera zeigt, kannst du den Transform.forward deiner Kamera nehmen, um den Spieler zu bewegen. Da musst du gegebenenfalls den Vektor anpassen, weil die Kamera vermutlich eine Rotation hat, aber es sollte reichen, um die Richtung zu bekommen, in die sich der Spieler bewegen soll.

Mapri15 
Fragesteller
 08.12.2019, 13:12

also gehen wir von diesem movement script aus:

if (Input.GetKey("w"))

    {

      rb.AddForce(0, 0, forward * Time.deltaTime, ForceMode.VelocityChange);

    }

wo müsste ich das einsetzen?

0
Crysali  08.12.2019, 14:24
@Mapri15

Verstehst du denn, was da steht? Es ist fast schon selbsterklärend. Wenn du dir die Dokumentation von Rigidbody.AddForce anschaust, dann siehst du dort, dass der Parameter force darüber entscheidet, in welche Richtung die Bewegung hinzugefügt wird. Du musst also das, was du für diesen Parameter übergibst, so gestalten, dass es in deine gewünschte Richtung geht. Ansätze dafür habe ich dir in meiner ersten Antwort gegeben.

1
Crysali  09.12.2019, 22:27
@Mapri15

Gerne, wenn du noch Fragen hast, einfach nachfragen!

0