Skip to content

Beta

  • Inhalt
  • Gamesübersicht
  • Games & Lyrik Podcast
  • Pressezentrum und Media-Kit
  • Jobs
  • Veröffentlichte E-Books
  • Impressum
    • Datenschutzerklärung
    • Disclaimer
  • Cookie-Richtlinie (EU)
  • Toggle search form
  • Der Krieger Lyrik
  • Ping Pong Arcade Cover
    Ping Pong Arcade Sport
  • Dungeon of the Endless Cover
    Dungeon of the Endless Strategie
  • Ankh 2 Cover
    Ankh 2 – Herz des Osiris Adventure
  • Candycrush Saga Titel
    Candy Crush Saga – Drei Gewinnt in Kunterbunt! Games und Lyrik
  • Uppercup
    Uppercup Football Sport
  • John Wick Hex Cover
    John Wick Hex Games und Lyrik
  • Mega Man X Cover SNES
    Mega Man X Games und Lyrik

zwei-Collider

Die Spielfigur mit dem Character Controller bewegen

Posted on 11/07/2022 By Claudia Wendt Keine Kommentare zu Die Spielfigur mit dem Character Controller bewegen

Ein Character Controller ist ein Script, dass dafür sorgt, dass dein Charakter sich bewegt. Damit deine Figur sich bewegt, benötigst du ein Script, dass deinem Character Controller sagt, was er machen soll.

Du benötigst zuerst ein Asset, aus dem Asset Store. Deine Spielfigur besitzt einen Sprite Renderer. Zudem brauchst du die Main Camera und verschiedene Tiles, die deinen Level zusammenbauen. Die Plattformen sollten mit Colliders versehen sein. Außerdem sollte ein Collider für den Boden vorhanden sein und einige Hintergrundgrafiken.

Zuerst benötigst du einen Character Controller. Diesen fügst du in Unity in einen Ordner deiner Wahl ein. Wähle den Spieler und füge dort das Script hinzu.

Das sieht dann folgendermaßen aus:

Hier lassen sich verschiedene Einstellungen zum Charakter vornehmen. Du hast die Möglichkeit die Sprungkraft einzustellen, die Duckgeschwindigkeit in Form der „Crouch Speed“, sowie die Bewegungsgeschmeidigkeit. Achte darauf, die Air Control zu aktivieren. Über die Option „What is Ground“ legst du die Oberfläche fest, auf der dein Charakter läuft. Wähle hier beispielsweise alles aus und entferne dann den Player. Wähle oben rechts als Layer den Player aus.

Dann gibt es drei weitere leere Plätze:

Ground Check: Es wird überprüft, ob die Spielfigur auf dem Boden steht.

Ceiling Check: Wenn du dich duckst, wird geprüft, ob eine Decke über deinem Kopf ist

Um die Checks möglich zu machen, benötigst du leere Objekte, die feststellen, wo sich was befindet. Erstelle über Create –> Empty Object ein erstes Objekt und kopiere es mit Strg+D. Bewege die jeweiligen Objekte zum obersten Abschnitt der Figur sowie zum unteren Abschnitt. Benenne das obere Objekt Ceiling Check und das untere Objekt mir Ground Check.

Ziehe diese in die jeweiligen Slots des Players.

Füge als nächstes einen Rigidbody 2D hinzu, um deinem Charakter Physik hinzufügen.

Dein Charakter sollte eine höhere Gravitation haben, als die anderen Spieleobjekte. Steigere also die Gravitation auf beispielsweise 3.

Zudem sollte dein Charakter immer gerade sein und nicht rotieren. Wähle deshalb Constraints und lege die Rotation auf der Z-Achse fest.

Als nächstes benötigt deine Figur einen Collider, da sie sonst durch den Bildschirm einfach durchfällt. Entsprechend der Figur kannst du mit verschiedenen Collidern arbeiten. Das kann zudem zu einem realistischeren Gefühl im Spiel führen. Du kannst beispelsweise Kreiscollider und Boxcollider verwenden. Du hast die Möglichkeit einen Kreiscollider hinzuzufügen. Passe zuerst den Boxcollder an und füge den Kreiscollider hinzu bzw. passe diesen an.

 

Jetzt kannst du dein PlayerMovement Script hinzufügen:

Gehe auf Add Component–> Geben PlayerMovement ein und wähle New Script sowie Create and Add.

Doppelklicke darauf, um es im Visual Studio zu öffnen.

Sollte das Script ausgegraut sein, gehe mit der rechten Maustaste oben auf Inspector und wähle den Debug-Mode. Dann kannst du das Dokument mit dem Visual Studio öffnen.

Das Ganze sieht jetzt so aus:

Zuerst wird eine Referenz vom PlayerMovement-Script zum Character Controller benötigt. Damit teilst du diese mit, was mit dem Charakter passieren soll.

Du benötigst folgende Zeile:

public CharacterController2D controller;

Dann erscheint im Player Movement Script der Character Controller 2D:

Dort kannst du dein Character Controller Script per Drag & Drop hineinziehen.

Würdest du unter void Update ( ) {

controller.Move( ); schreiben, würdest du dem System sagen, dass deine Figur sich bewegen soll.

Das reicht aber nicht aus. Du musst spezifizieren wo deine Figur sich bewegen soll, ebenso die Richtung und die Geschwindigkeit. Dafür ist die Steuerung des Spielers notwendig. Deswegen fügst du folgendes hinzu:

Für das Input vom Spieler benötigst du die Input-Class:

Input.GetAxosRaw („Horizontal“)

Der Wert liegt in der Regel zwischen -1 und 1. Das ist abhängig vom Userinput.

Der Linke Pfeil oder die A-Taste steht für -1.

Der Rechte Pfeil oder D steht für 1.

Das trifft auch auf den Controller zu.

Du benötigst außerdem den Debug.Log-Befehl:

Dieser Debug.log-Befehl sendet eine Nachricht an die Konsole.

Am Ende sieht die Zeile folgendermaßen aus:

Debug.Log(Input.GetAxisRaw(„Horizontal“));

Die Konsole reagiert auf die neue Eingabe. Drückst du die Pfeiltasten in die jeweiligen Richtungen, zeigt die Konsole Folgendes:

Das Script sieht jetzt folgendermaßen aus:

Dadurch registriert das System die Eingabe.

Der nächste Aspekt den wir benötigen ist das Fixed Update. Mit dieser Eingabe aktualisiert der Computer den Bilschirm mit jedem Frame.

Du benötigst die folgende Eingabe:

void FixedUpdate ( )

{

//Move our character

}

Dieser Abschnitt sorgt für die Übertragung des Spielerinputs auf den Charakter.

void Start kannst du löschen.

Damit hast du folgendes Script:

Der Userinput muss von einer Funktion zur anderen übertragen werden. Dafür benötigst du eine Variable.

Du benötigst folgende Zeile:

float horizontalMove = 0f;

Anschließend soll der Charakter bewegt werden. Du schreibst deswegen under FixedUpdate folgendes:

controller.Move(horizontalMove);

Mit der Variable (horizontalMove) gibst du an, wie stark die Figur bewegt werden soll.

Zudem musst du dem System sagen, dass der Charakter sich nicht gerade ducken oder springen soll.

Das erste false bezieht sich auf das Ducken und das zweite false auf das Springen.

controller.Move(horizontalMove, false, false);

Jetzt wird die Geschwindigkeit benötigt:

public float runSpeed = 40f;

Jetzt multiplizierst du das Horizontal Input mit der runSpeed.

horizontalMove = Input.GetAxisRaw(„Horizontal“) * runSpeed;

Auch das FixedUpdate muss mit der Time.fixedDeltaTime multipliziert werden:

controller.Move(horizontalMove * Time.fixedDeltaTime, false, false);

Die Funktion bestimmt, dass die Bewegung immer im gleichen Wert festgelegt ist.

Dein fertiges Script für die Bewegung sieht so aus:

Fixed Update bedeutet, dass die Funktion unzählige Male aufgerufen werden kann, ohne das es ein anderes Ergebnis gibt.

Wenn die Figur fällt, verschiebt sie sich kurz auf den Boden. Um dies zu beseitigen, wähle von der Figur den Rigidbody 2D und ändere die Collision Detection von Discrete zu Continuous. Diese Umstellung bewirkt, dass die Figur nicht in den Boden hineinrutscht.

Das Springen

Jetzt wird das Springen hinzugefügt. Das System muss die Figur zum Springen bringen, wenn du einen bestimmten Knopf drückst.

Du benötigst folgende Zeile:

if (Input. GetButtonDown(„Jump))

Diese Informationen müssen jetzt auch in den FixedUpdate-Bereich übertragen werden. Dafür benötigst du eine Variable.

Dafür benötigst du einen Booleschen Operator. Das bedeutet, das Ergebnis kann nur wahr (true) oder falsch (false) sein:

bool jump = false;

Dazu kommt die Bedingungen, dass der Jump-Knopf gedrückt werden muss, damit der Charakter springt.

Also muss zur Bedingungen hinzugefügt werden, dass:

jump = true;

Die Jump-Variable wird beim Fixed-Update-Bereich hinzugefügt. Wird die Taste nicht gedrückt, soll der Charakter nicht mehr hüpfen. Also wird im Fixed-Update-Berich noch jump = false; hinzugefügt.

Das Script sieht folgendermaßen aus:

Jetzt springt deine Figur.

Damit deine Figur beim Springen nicht an Plattformen hängen bleibt, sondern glatt heruntergleitet, benötigst du Physik-Material.

Wähle dafür im Projektfenster Create–>Physics Material 2D

Folgende Einstellungen stehen zur Verfügung:

Setze Friction und Bounciness auf 0.

Wähle den Spieler und ziehe das Physics Material in den Material-Slot vom Collider.

Verwendest du mehr Collider, füge auch beim anderen Collider dies hinzu.

Wie dein Charakter sich duckt

Die Eingaben für die Charakterbewegungen findest du in den Projekteinstellungen von Unity.

Wähle dem Anschnitt fürs Springen und klicke mit der rechten Maustaste auf „Jump“. Wähle Duplicate Array Element.

Damit erschaffst du eine weitere Eingabemöglichkeit für das Ducken (Crouching) deines Charakters.

Die Tastaturbelegung lässt sich eine alternative Taste definieren. Dabei handelt es sich um den Alt Positive Button bzw. den alternativen Positive Button.

Das Ducken muss jetzt im Script mit eingearbeitet werden:

Im Updatebereich: if (Input.GetButtonDown(„Crouch“))

Auch ein boolscher Faktor muss hinzugefügt werden:

bool crouch = false;

Im Bereich Fixed Update wird Crouch ergänzt.

Das Ducken funktioniert nicht genauso wie das Springen. Deine Figur soll sich nicht kurz ducken und dann damit aufhören. Das ducken soll beendet werden, wenn die Taste für das Ducken losgelassen wird. Dein Charakter soll sich nur ducken, wenn du die Taste gedrückt hältst.

Jetzt benötigst du folgende Zeile:

else if (Input.GetButtonUp(„Crouch“))

{

crouch = false;

Du sagst dem System damit, dass deine Figur sich nicht duckt, wenn du keine Taste drückst.

Jetzt wird noch nichts passieren, wenn du die Taste fürs Ducken drückst, da das Ducken durch eine Animation geschieht.

Damit das Ducken funktioniert, wähle den Collider deiner Figur und ziehe ihn in den Crouch Disable Collider.

Damit wird das Ducken für deine Figur möglich. Jetzt passt dein Charakter zwischen zwei Ebenen durch. Für das Ducken benötigst du jedoch noch eine Animation.

 

 

Spieleprogrammierung Tags:Unity

Beitrags-Navigation

Previous Post: POST VOID
Next Post: Beetlejuice

Related Posts

  • Post Processing Effects
    Post Processing Effects in Unity – Bloom, Dirtiness, Color Grading Spieleprogrammierung
  • Unity Asset
    Die Grundlagen von Unity Spieleprogrammierung
  • Was ist ein Sprite Renderer? Spieleprogrammierung
  • New Project Wie du ein Projekt in Unity anlegst
    Wie du ein Projekt in Unity anlegst Spieleprogrammierung
  • 9 Felder
    9-Slicing Scalable Sprites Spieleprogrammierung
  • Unity HDRP Area Lights Spieleprogrammierung

Schreibe einen Kommentar Antwort abbrechen

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

Archives

  • November 2023
  • August 2023
  • Juli 2023
  • April 2023
  • März 2023
  • Februar 2023
  • Januar 2023
  • Dezember 2022
  • November 2022
  • Oktober 2022
  • September 2022
  • August 2022
  • Juli 2022
  • Juni 2022
  • Mai 2022
  • April 2022
  • März 2022
  • Februar 2022
  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021
  • August 2021
  • Juli 2021
  • Juni 2021
  • Mai 2021
  • April 2021
  • Februar 2021
  • Januar 2021
  • Dezember 2020
  • November 2020
  • Oktober 2020
  • September 2020
  • August 2020
  • Juli 2020
  • Juni 2020

Categories

  • Action
  • Adventure
  • Adventure Escape
  • Brettspiele
  • Games und Lyrik
  • Geschicklichkeit
  • Hack and Slash
  • Horror
  • Kartenspiele
  • Liebe
  • Lyrik
  • Point-and-Click-Adventure
  • Puzzle
  • Rennspiele
  • Rogue-like
  • RPG
  • Shoot Em Up
  • Shooter
  • Simulation
  • Spieleentwickler
  • Spieleprogrammierung
  • Sport
  • Strategie
  • Survival
  • Textadventure
  • Tower-Defense
  • Uncategorized
  • Wimmelbild
  • Wirtschaftssimulation

Recent Posts

  • ProtoCorgi
  • Rosewater
  • Prim
  • Soccer Story
  • Application Systems Heidelberg

Recent Comments

  1. A WordPress Commenter zu Hello world!
  2. Rita zu Catch me!
  3. cvd zu Heart of Muriet
  4. cvd zu Heart of Muriet
  5. Gordon zu Jasper and the City of Lights
  • MegaMan X6 Cover
    Mega Man X6: The Greatest Battle Ever!! Games und Lyrik
  • Ace Lightning - Game Boy Advance - Cover
    Ace Lightning Games und Lyrik
  • Nichibutsu
    Nichibutsu Spieleentwickler
  • Fueled Up Cover
    Fueled Up Action
  • 10000 Bullets Cover
    10000 Bullets – Auftragskiller fürs Syndikat Action
  • 3, 2, 1, Smurf! My First Racing Game Cover
    Die Schlümpfe: Auf die Plätze fertig, los! Games und Lyrik
  • MM Zero Collection
    Mega Man Zero Collection Games und Lyrik
  • Never Alone Cover
    Never Alone Action

Copyright © 2025 Beta.

Powered by PressBook News Dark theme