Das Player Movement Script

Words
599
Reading
3 min
Listen
Play
6y


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;

alt

Das Input vom Spieler wird mit der Laufgeschwindigkeit mutipliziert:

horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed;

alt

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.

alt

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.

alt alt

Für das Springen wird überprüft, ob wir die Sprungtaste betätigen oder nicht:

if (input.GetButtonDown("Jump"))

{

jump = true;

}

alt

Das soll auch in der FixedUpdate-Funktion geschehen. Die Übertragung der Information erfolgt mit einer boolschen Variable:

bool jump = false;

alt

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;

alt

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

alt

Benenne es mit Slippery. Setze Friction und Bounciness auf 0. Nimm das PhysicsMaterial und ziehe es auf das Material vom BoxCollider des Players.

alt

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.

alt

Klicke mit der rechten Maustaste auf den Jumpbutton und wähle Duplicate Array Element. Benenne es "Crouch".

alt

Möchten die Spieler mit Pfeiltasten Spielen, definiere einfach einen Alternative Button.

alt

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 wi dMö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;

}

alt

Damit die entsprechenden Abschnitte im Character Controller erscheinen, musst du sie von private auf publich umstellen:

alt alt

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.



Posted from my blog with SteemPress : https://games-und-lyrik.de/das-player-movement-script/
Das Player Movement Script | Ecency