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 Input vom Spieler wird mit der Laufgeschwindigkeit mutipliziert:
horizontalMove = Input.GetAxisRaw(„Horizontal“) * runSpeed;
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.
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.
Für das Springen wird überprüft, ob wir die Sprungtaste betätigen oder nicht:
if (input.GetButtonDown(„Jump“))
{
jump = true;
}
Das soll auch in der FixedUpdate-Funktion geschehen. Die Übertragung der Information erfolgt mit einer boolschen Variable:
bool jump = false;
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;
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
Benenne es mit Slippery. Setze Friction und Bounciness auf 0. Nimm das PhysicsMaterial und ziehe es auf das Material vom BoxCollider des Players.
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.
Klicke mit der rechten Maustaste auf den Jumpbutton und wähle Duplicate Array Element. Benenne es „Crouch“.
Möchten die Spieler mit Pfeiltasten Spielen, definiere einfach einen Alternative Button.
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;
}
Damit die entsprechenden Abschnitte im Character Controller erscheinen, musst du sie von private auf public umstellen:
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.