Das Player Movement Script

avatar


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 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;

}

Damit die entsprechenden Abschnitte im Character Controller erscheinen, musst du sie von private auf publich 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.



Posted from my blog with SteemPress : https://games-und-lyrik.de/das-player-movement-script/


0
0
0.000
1 comments
avatar

Congratulations @engelchen! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s) :

You have been a buzzy bee and published a post every day of the week

You can view your badges on your board And compare to others on the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @hivebuzz:

Hive Power Up Day - The countdown is ticking
Hive Power Up Day - Let's grow together!
0
0
0.000