Ich bin neu in Unity und benutze CharacterController.Move
, um meinen Charakter zu bewegen. In meiner Spielwelt ist 1 Einheit = 1 Meter. Das funktioniert super, zum Beispiel für Geschwindigkeit: Wenn ich eine Geschwindigkeit von 5 verwende, hat der Charakter eine Geschwindigkeit von 5m/s.Sprunghöhe und Schwerkraft in Einheit
Ich mache meinen Charakter Sprung mit:
if (Input.GetButton("Jump"))
moveDirection.y = jumpHeight;
...
moveDirection.y -= gravity * Time.deltaTime;
Dies funktioniert auch in Ordnung, aber da die Schwerkraft nach unten meinem Charakter zieht, wird die jumpHeight nicht wirklich erreicht. Zum Beispiel ergibt ein jumpHeight von 8 einen Sprung von etwas rund 2,4 Metern.
Wie kann ich meinen Code ändern, so dass jumpHeight die Höhe darstellt, in der der Charakter springt, auch wenn die Schwerkraft ihn runterzieht? Mit einem Sprung von 8 möchte ich, dass mein Spieler einen Sprung von 8 Metern macht.
Laut der Physik wäre die Höhe mit einer Anfangsgeschwindigkeit von 8 1,6 mit einer Schwerkraft von 20 (height = initialvelocity^2/(2*gravity)
). Wenn dies tatsächlich die Höhe wäre, die ich im Spiel sehe, könnte ich die Formel einfach umwandeln, aber ich sehe eine Höhe von etwa 2,4 Metern ...
Haben Sie sich Gedanken über irgendeine Lösung mit vector3.slerp ? – Asbest