Füge zu Beginn ein Neues Script zu deiner Figur hinzu. Benenne es PlayerMovement Script. Wir benötigen zuerst einen Verweis vom Player Movement Script zum Character Controller. Es wird dem Script gesagt, das der Charakter bewegt werden soll.
Zu Beginn erstellen wir eine Variable:
public CharacterController2D controller;
Dann öffnet sich die Möglichkeit, den Character Controller in eine freie Stelle zu ziehen.
Für die Bewegung müssen die Richtung und die Geschwindigkeit der Bewegung definiert werden. Dafür benötigst du Input vom Spieler:
Linke Pfeiltaste oder A = 1
Rechte Pfeiltaste oder D = -1
Mit dem Controller ist es genauso.
horizontalMove = Input.GetAxisRaw(„Horizontal“);
Der Update-Bereich organisiert den Input vom Player.
FixedUpdate wird für die Physik genutzt. Diese Funktion wird benötigt.
Erstelle ein weitere Variabe:
float horizontalMove = 0f;
FixedUpdate bewegt den Charakter.
void FixedUpdate ()
{
controller.Move(horizontalMove, false, false);
}
Das erste false steht dafür, das der Spieler sich nicht ducken soll und das zweite dafür, das er nicht springen soll.
Im Player Controller Script wird eine Definition für Move benötigt:
public void Move(float move, bool crouch, bool jump)
{}
Als nächste Variable benötigst du:
public float runSpeed = 40f;
![Das Player Movement Script 3 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-52.png)
Das Input vom Spieler wird mit der Laufgeschwindigkeit mutipliziert:
horizontalMove = Input.GetAxisRaw(„Horizontal“) * runSpeed;
![Das Player Movement Script 4 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-53.png)
Wenn der Spieler sich nach links und rechts bewegt, liegt die Bewegung bei -40 und 40.
Die Bewegung wird zusätzlich mit Time.fixedDeltaTime multipliziert.
![Das Player Movement Script 5 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-54.png)
Time.fixedDeltaTime ist die Zeit, seit die letzte FixedUpdate-Funktion aufgerufen wurde. Dies legt fest, das die Bewegung um die gleiche Größe erfolgt, egal wie oft die Funktion aufgerufen wird. Somit ist die Geschwindigkeit vom Charakter gleich, egal um welche Systeme oder Plattformen es sich handelt.
Wenn die Spielfigur fällt, kann sie sich ein wenig in den Boden verschieben.
Deswegen wird im Rigidbody2D die Collision Detection von Discrete zu Continuous.
![Das Player Movement Script 6 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-69.png)
![Das Player Movement Script 7 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-68.png)
Für das Springen wird überprüft, ob wir die Sprungtaste betätigen oder nicht:
if (input.GetButtonDown(„Jump“))
{
jump = true;
}
![Das Player Movement Script 8 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-70.png)
Das soll auch in der FixedUpdate-Funktion geschehen. Die Übertragung der Information erfolgt mit einer boolschen Variable:
bool jump = false;
![Das Player Movement Script 9 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-71.png)
Unter FixedUpdate wird außerdem die Jump-Variable hinzugefügt.
Wenn der Jump-Button gedrückt wird, gibt das PlayerMovement-Script an den Controller weiter, das wir springen wollen. Danach wird wieder
jump = false;
![Das Player Movement Script 10 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-72.png)
Dies muss definiert werden, da wir nicht für immer weiterspringen wollen.
Ein weiteres Problem ist, das der Charakter, wenn er auf eine Plattform springen will, dort stecken bleibt. Der Charakter soll an dieser dann jedoch runterrutschen und runterfallen. Dafür wird ein Physics Material benötigt. Wähle unter Project mit der rechten Maustaste Create–> PhysicsMaterial2D
![Das Player Movement Script 11 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-73.png)
Benenne es mit Slippery. Setze Friction und Bounciness auf 0. Nimm das PhysicsMaterial und ziehe es auf das Material vom BoxCollider des Players.
![Das Player Movement Script 12 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-74.png)
Hast du für den Protagonisten mehrere Colliders festgelegt, kannst du das Physics Material auch den anderen Colliders zuweisen.
Die Tastaturbelegung definiert sich über den InputManager von Unity. Diesen findest du unter den Project Settings.
![Das Player Movement Script 13 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-75-1024x595.png)
Klicke mit der rechten Maustaste auf den Jumpbutton und wähle Duplicate Array Element. Benenne es „Crouch“.
![Das Player Movement Script 14 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-76.png)
Möchten die Spieler mit Pfeiltasten Spielen, definiere einfach einen Alternative Button.
![Das Player Movement Script 15 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-77.png)
Wiederhole die Schritte vom Springen fürs Ducken:
Wenn die Taste fürs Ducken losgelassen wird, soll auch die Figur aufhören sich zu ducken. Deswegen funktioniert es nicht ganz wie das Springen. Möchten die Spieler mit Pfeiltasten spielen, definiere einfach einen Alternative Button.as Springen:
Füge in der Updatefunktion folgendes hinzu:
else if (Input.GetButtonUp(„Crouch“))
{
crouch = false;
}
![Das Player Movement Script 16 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-78.png)
Damit die entsprechenden Abschnitte im Character Controller erscheinen, musst du sie von private auf public umstellen:
![Das Player Movement Script 17 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-79.png)
![Das Player Movement Script 18 Das Player Movement Script](https://games-und-lyrik.de/wp-content/uploads/2020/08/grafik-80.png)
Ziehe den Collider, der deaktiviert werden soll in das entsprechende Feld. Befindet sich über dir eine „Decke“ verlangsamt sich dein Charakter, wenn du die Ducken-Taste drückst.