Der rollende Ball
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 27 von 63.
In diesem Kapitel entwickelst du ein kleines Spiel, Coin Rush. Du rollst einen Ball mit den Pfeiltasten durch eine von Wänden umgebene Arena und sammelst Münzen, bevor die Zeit abläuft. Zwei Skripte teilen sich die Arbeit, wie es auch in einem Unity-Projekt der Fall wäre: Ball bewegt den Ball und verwaltet die Punktzahl und die Zeit, und Coin befindet sich auf jeder Münze. Coin.cs beginnt als leere Klasse, und in der nächsten Lektion wird sie ausgefüllt.
Ein Ball rollt, wenn du ihn anschiebst, statt ihn zu platzieren. Schiebe seinen Rigidbody mit AddForce an und lass seine Rotation frei: Die Kraft bewegt den Ball, und die Reibung am Boden greift an der Unterseite des Balls und versetzt ihn in Drehung. Diese Bowlingkugel rollt die Bahn hinunter, solange die Leertaste gedrückt wird:
public float push = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(Vector3.forward * push);
}
}Ein Ball, der ohne zu rutschen rollt, dreht sich mit seiner Geschwindigkeit geteilt durch seinen Radius. Ein Ball mit dem Radius 0.5, der sich mit 3 Einheiten pro Sekunde bewegt, dreht sich also mit 6 Radiant pro Sekunde (rb.angularVelocity). Ändere stattdessen seine transform.position oder friere seine Rotation in den Constraints des Rigidbody ein, und er gleitet wie ein Puck, ohne sich zu drehen. Eine schlichte, einfarbige Kugel sieht in beiden Fällen gleich aus: Um die Rollbewegung zu erkennen, beobachte während des Spiels die Angular Velocity im Info-Bereich des Rigidbody.
Aufgabe
MittelStarte Coin Rush mit dem Ball. Im Inspector erhält Ball eine force von 10.
- Speichere in
Start()dieRigidbodydes Balls inrb. - Schiebe den Ball in
FixedUpdate()mit den Pfeiltasten:Input.GetAxis("Horizontal")entlang der x-Achse undInput.GetAxis("Vertical")entlang der z-Achse, jeweils mitforce. - Lass seine Rotation frei, damit er rollt.
Lass Coin.cs vorerst unverändert. Drücke Play, klicke ins Spiel und rolle durch die Arena, dann Check.
Probier es selbst
using UnityEngine;
public class Ball : MonoBehaviour
{
public float force = 10f;
private Rigidbody rb;
void Start()
{
}
void FixedUpdate()
{
// Bewege den Ball mit den Pfeiltasten: Horizontal entlang der x-Achse, Vertical entlang der z-Achse.
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand5Projekt: Münzrausch
Der rollende BallMünzen zum Sammeln