Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Starte Coin Rush mit dem Ball. Im Inspector erhält Ball eine force von 10.

  • Speichere in Start() die Rigidbody des Balls in rb.
  • Schiebe den Ball in FixedUpdate() mit den Pfeiltasten: Input.GetAxis("Horizontal") entlang der x-Achse und Input.GetAxis("Vertical") entlang der z-Achse, jeweils mit force.
  • 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.
    }
}
quiz iconTeste dich selbst

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