Skip to content
Versunken

Games und Lyrik

Von Spielen inspiriert

  • Inhalt
  • Gamesübersicht
  • Shop
  • Games & Lyrik Podcast
  • Pressezentrum und Media-Kit
  • Jobs
  • Impressum
    • Cookie-Richtlinie (EU)
    • Datenschutzerklärung
    • Disclaimer
  • Toggle search form
Einen Character Controller schreiben

Einen Character Controller schreiben

Posted on 7. September 202327. September 2023 By Claudia Wendt Keine Kommentare zu Einen Character Controller schreiben
Einen Character Controller schreiben

Für das Bewegen deiner Spielfigur benötigst du einen Character Controller. Ausgangslage bilden eine Umgebung mit Collidern. Desweiteren brauchst du einen Charakter. Der Charakter benötigt einen eigenen Collider. Als nächstes folgt das Hinzufügen eines 2D Rigidbody.

Erstelle für deinen Charakter ein Script und nenne es Character2DController.

Einen Character Controller schreiben
Einen Character Controller schreiben 18

Stelle das Script auf private void um:

Werbung
Einen Character Controller schreiben
Einen Character Controller schreiben 19

Für die x-Achse benötigen wir ein Input:

var movement = Input.GetAxis („Horizontal“)

1 steht für die rechte Pfeiltaste und -1 für die linke Pfeiltaste.

Wir benötigen einen neue Vektor 3 für die x-Achse als Inputwert:

transform.position += newVector3(movement, 0, 0) * Time.DeltaTime * MovementSpeed;

Die neue Position berechnet sich asu dem neuen Vektor 3 * Time.DeltaTime * Bewegungsgeschwindigkeit (MovementSpeed)

Werbung

Deswegen muss die Bewegungsgeschwindigkeit als Variable hinzugefügt werden:

public float MovementSpeed = 1;

Das Script sieht folgendermaßen aus:

Einen Character Controller schreiben
Einen Character Controller schreiben 20

Drückst in Unity auf Play, kannst du die Figur jetzt von Links nach Rechts bewegen. Du kannst die Geschwindigkeit erhöhen, wenn die Figur zu langsam ist.

Einen Character Controller schreiben
Einen Character Controller schreiben 21

Schaffe jetzt eine Refferenz zum Rigidbody:

private Rigidbody2D Rigidbody;

In die Startkomponente fügst du folgendes ein:

Rigidbody = GetComponent<Rigidbody2D>();

Ein weiteres Input wird benötigt:

if(Input.GetButtonDown(„Jump“))

Du benötigst eine Kraft in der y-Achse, die das Springen initiiert: Diese benennst JumpForce:

Rigidbody.AddForce(new Vector3(0, JumpForce));

JumpForce wird als Variable eingefügt:

public float JumpForce = 1;

Die Komponente gibt den Impuls zum Springen:

Rigidbody.AddForce(new Vector3(0, JumpForce), ForceMode2D.Impulse);

Jetzt kann die Y-Achse überprüft werden, um nur einmal zu springen:

if (Input.GetButtonDown(„Jump“) && Mathf.Abs(Rigidbody.velocity.y) < 0.001f)

Das fertige Script sieht folgendermaßen aus:

Einen Character Controller schreiben
Einen Character Controller schreiben 22

Mit dieser Zusammenstellung kannst du dich erst einmal bewegen. Mit dem folgenden Teil des Tutorials wird das Script komplexer. Dafür musst du die Rigidbody-Komponenten in Rigidbody2D umbenennen.

Für das Ducken benötigst du folgende Variable:

private float CrouchSpeed = .36f;

Zur Glättung der Bewegung gibt es das Movement Smoothing:

private float MovementSmoothing = .05f;

Air Control definiert, ob ein Spieler beim Springen steuern kann oder nicht:

private bool AirControl = false;

WhatIsGround definiert die Untergrund für den Spieler:

private LayerMask WhatIsGround;

Groundcheck überprüft, ob sich der Spieler auf dem Boden befindet oder nicht:

private Transform GroundCheck;

Der CeilingCheck überprüft, ob eine Begrenzung nach oben vorhanden ist:

private Transform CeilingCheck;

CrouchDisableCollider definiert, das der Collider deaktiviert wird, wenn der Spieler sich duckt:

private Collider2D CrouchDisableCollider;

Damit sind die ersten Variablen definiert:

Einen Character Controller schreiben
Einen Character Controller schreiben 23

Es werden weitere Variablen benötigt:

const float GroundedRadius = .2f;

definiert den Radius des Überlappungskreises, um festzustellen, ob er sich auf dem definierten Untergrund befindet.

private book Grounded;

gibt an, ob der Spieler sich auf dem Untergrund befindet oder nicht.

const float CeilingRadius = .2f;

ist der Radius des Überlappungskreises, um festzustellen, ob der Spieler aufstehen kann oder sich eine Decke über ihn befindet.

private bool FacingRight = true;

Zum Bestimmen, in welche Richtung sich der Spieler gerade befindet.

private Vector3 Velocity = Vector3.zero;

Einen Character Controller schreiben
Einen Character Controller schreiben 24

Als nächstes benötigen wir das Eventsystem von Unity:

Du ergänzt:

using UnityEnginge.Events;

Einen Character Controller schreiben
Einen Character Controller schreiben 25

Desweitern wird ein UnityEvent benötigt, um zu erkennen, ob der Charakter nach dem Springen landet oder nicht:

public unityEvent OnLandEvent;

Das BoolEvent bezieht sich auf das Ducken:

public class BoolEvent : UnityEvent<bool> { }

public BoolEvent OnCrouchEvent;

private book wasCrouching = false;

Einen Character Controller schreiben
Einen Character Controller schreiben 26

Es folgt im Script keine Start- sondern die Awakefunktion:

Start beginnt wenn das Programm startet. Awake bezieht sich auf das Objekt, das innerhalb des Objekts initialisiert wird.

private void Awake ()

{

Rigidbody2D = GetComponent<Rigidbody2D>();

if (OnLandEvent == null)

OnLandEvent = new UnityEvent();

if (OnCrouchEvent == null)

OnCrouchEvent = BoolEvent();

}

Als nächstes definieren wir die „Grounded“ Position näher:

Der Spieler ist geerdet, wenn ein definierter Radius auf die Groundcheck-Position trifft, die als Ground bezeichnet wird:

private void FixedUpdate ()

{

bool wasGrounded = Grounded;

Grounded = false;

Collider2D[] colliders = Physics2D.OverlapCircleAll(GroundCheck.position, GroundedRadius, WhatIsGround);

for (int i = 0; i < colliders.Lenght; i++)

{

if (colliders[i].gameObject != gameObject)

{

Grounded = true;

if (!wasGrounded)

OnLandEvent.Invoke();

}

}

}

Als nächstes wird überprüft, ob der Charakter, wenn er sich duckt, aufstehen kann. Wenn nicht, soll er sich ducken:

public void Move(float move, bool crouch, bool jump)

{

if (!crouch)

{

Wenn der Charakter eine Decke hat, die ihn am Aufstehen hindert, soll er sich weiter ducken:

if (Physics2D.OverlapCircle(CeilingCheck.position, CeilingRadius, WhatIsGround))

{

crouch = true;

}

}

Der Spieler kann die Figur nur Steuern, wenn sie sich auf dem Untergrund befindet oder airControl eingeschaltet ist:

if (Grounded || AirControl)

{

Wenn die Figur sich duckt:

if (crouch)

{

if (wasCrouching)

{

wasCrouching = true;

OnCrouchEvent.Invoke(true);

}

else if (wasCrouching)

{

wasCrouching = false;

OnCrouchEvent.Invoke(false)

}

Reduziere die Geschwindigkeit mit dem crouchSpeed-Multiplikator:

move *= CrouchSpeed;

Deaktiviere einen der Collider, wenn die Figur sich duckt oder hockt:

if (CrouchDisableCollider != null)

CrouchDisableCollider.enabled = false;

} else

{

Aktiviere den Collider, wenn die Figur nicht hockt oder duckt:

if (CrouchDisableCollider !=null)

CrouchDisableCollider.enabled = true;

if (wasCrouching)

{

wasCrouching = false;

OnCrouchEvent.Invoke(false);

}

}

Einen Character Controller schreiben
Einen Character Controller schreiben 27

Bewege den Charakter, indem du die Zielgeschwindigkeit ermittelst:

Vector3 targetVelocity = new Vector2(move * 10f, Rigidbody2D.velocity.y);

Und dann glätte es und wende es auf den Charakter an:

Rigidbody2D.velocity = Vector3.SmoothDamp(m_Rigidbody2D.velocity, targetVelocity, ref Velocity, MovementSmoothing);

Wenn die Eingabe sich nach rechts bewegt und der Player nach links zeigt:

if (move > 0 && !m_FacingRight)

drehe den Spieler um:

Flip();

Andernfalls, wenn sich der Input nach links bewegt und der Spieler nach rechts schaut:

else if (move < 0 && FacingRight)

drehe den Spieler:

Flip();

Wenn der Spieler springen soll:

if (Grounded && jump)

{

Füge Sie dem Spieler eine vertikale Kraft hinzu.

Grounded = false;

Rigidbody2D.AddForce(new Vector2(0f, JumpForce));

Einen Character Controller schreiben
Einen Character Controller schreiben 28

private void Flip()

{

Wechseln Sie die Art und Weise, wie der Spieler als zugewandt gekennzeichnet ist:

FacingRight = !FacingRight;

Multipliziere die lokale x-Skala des Spielers mit -1.

Vector3 theScale = transform.localScale;

theScale.x *= -1;

transform.localScale = theScale;

}

}

Das fertige Script sieht folgendermaßen aus:

Einen Character Controller schreiben
Einen Character Controller schreiben 29
Einen Character Controller schreiben
Einen Character Controller schreiben 30
Einen Character Controller schreiben
Einen Character Controller schreiben 31
Einen Character Controller schreiben
Einen Character Controller schreiben 32
Post Views: 1.495
Weitersagen:
Games und Lyrik Tags:Unity

Beitragsnavigation

Previous Post: Das Player Movement Script
Next Post: A Juggler’s Tale

Related Posts

  • Tomb Raider Legend Cover
    Tomb Raider Legend Games und Lyrik
  • Callisto Protocol
    Callisto Protocol Games und Lyrik
  • Versunken
    Welches Problem habe ich, wenn mein Charakter nicht fällt? Games und Lyrik
  • Der Fluch des Biests Games und Lyrik
  • Dragon Skulle
    Dragon Skulle Games und Lyrik
  • Until Dawn: Rush of Blood - Cover
    Until Dawn: Rush of Blood Games und Lyrik

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

  • Games und Lyrik (2.699)
    • Action (80)
    • Adventure (453)
      • Point & Click-Adventure (16)
    • Ecke der verlorenen Spiele (14)
    • Horror (35)
    • Kinderfreundliche Games (3)
    • Partyspiele (9)
    • Puzzle (16)
    • Rollenspiele (114)
    • Shooter (346)
    • Simulation (30)
    • Sport (111)
      • Fußball (4)
      • Rennspiele (5)
    • Strategie (200)
    • Survival (9)
    • Wimmelbild (8)
  • Hardware (2)
  • Jump & Run (1)
  • Lyrik (112)
  • Spieleentwickler (421)
  • Spieleprogrammierung (31)
Werbung

Action Adventure Capcom Daedalic Deck 13 Devcom 2020 Ecke der verlorenen Spiele Gamescom 2019 Gamescom 2020 Gamescom 2021 Gamescom 2023 Games from Spain GB GBA GBC Horror Indie Arena Booth 2022 Jump & Run Kalypso Media Mega Man N64 NDS NES Nintendo Switch PC PS1 PS2 PS3 PS4 PS5 PSP Rareware Rennspiel Sega Shooter SNES State of Play Strategie Switch Unity Visual Novel VR Windows Xbox XBox One

Cosplay-Schnittmuster

  • 762efa7f2fc7ddb0fbbb2b1694d2198a Schnittmuster Cosplay Mantel McCalls M2016 X S-XXL 20,00 €
  • 7b80953bf9d2a2b3039ec04ad5d8670d Schnittmuster Elfenkostüm - Butterick B4377 AA 6-12 (Gr. 34-40) Dt. Cosplay 16,75 €
  • 6dcd80d6cc60dfab6dbe04997fc15c78 Schnittmuster Cosplay Bogenschütze McCalls M2080 E5 14-22 (Gr. 40-48) Englische Anleitung 20,00 €

Unsere Besucher

088411
Users Today : 33
Total views : 404066
Powered By WPS Visitor Counter

RSS Lets-Plays.de

  • Fortschrittsbalken statt Alltagsschwere
  • Verlockende In-Game-Käufe

Ezoic

RSS GameStar – News

  • The Night Agent Staffel 3: Der Action-Kracher geht in die nächste Runde, doch ein Serienliebling fehlt
  • Dungeons & Dragons - Eine neue Klasse kommt zu D&D Beyond und sie ist im Grunde ein knallharter Barschläger
  • »Größten Respekt« - Gaming-Fans salutieren einem verstorbenen Spieler, dessen Nachlass seinen guten Spielegeschmack und tadellosen Sinn für Ordnung offenbart
TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste
blogwolke.de - Das Blog-Verzeichnis
  • SCAT Special Cybernetic Attack Team Cover
    S.C.A.T.: Special Cybernetic Attack Team Games und Lyrik
  • Spirit Oath Cover
    Spirit Oath Adventure
  • Cocoron Cover
    Cocoron Shooter
  • Mumo Studio Logo Project Pulsar
    MUMO Studio: Ein Blick auf das Neue unabhängige Spiel „DUBIUM“ Spieleentwickler
  • THQ Nordic Logo
    THQ Nordic: Ein wachsender Gigant in der Gaming-Branche Spieleentwickler
  • Blast Brigade Cover
    Blast Brigade vs. Evil Legion of Dr. Cread Shooter
  • Bandit Kings of Ancient China Cover
    Bandit Kings of Ancient China Strategie
  • Gems of War Screenshot
    Gems of War Games und Lyrik

Copyright © 2026 Games und Lyrik.

Powered by PressBook News Dark theme