Menu
CoddyTech

Der rollende Ball

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 28 von 71.

In diesem Kapitel entwickelst du ein kleines Spiel, Coin Rush. Du rollst einen Ball mit den Pfeiltasten durch eine von Mauern umgebene Arena und sammelst Münzen, bevor die Zeit abläuft. Zwei Skripte teilen sich die Aufgaben, wie es auch in einem Unity-Projekt der Fall wäre: Ball bewegt den Ball und verwaltet Punktestand und Uhr, und Coin befindet sich auf jeder Münze. Coin.cs beginnt als leere Klasse, und in der nächsten Lektion wird sie vervollständigt.

Ein Ball rollt, wenn du ihn anschiebst, statt ihn zu platzieren. Schiebe sein Rigidbody mit AddForce an und lass seine Drehung frei: Die Kraft bewegt den Ball, und die Reibung des Bodens greift an der Unterseite des Balls und versetzt ihn in Drehung. Diese Bowlingkugel rollt die Bahn hinunter, solange die Leertaste gedrückt gehalten 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 einem Radius von 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 Drehung unter „Constraints“ im Rigidbody ein, und er gleitet wie ein Puck, ohne sich zu drehen. Eine schlichte einfarbige Kugel sieht in beiden Fällen gleich aus: Um das Rollen zu sehen, beobachte während des Spiels „Angular Velocity“ im Abschnitt „Info“ des Rigidbody.

challenge icon

Aufgabe

Mittel

Starte Coin Rush: Bewege den Ball mit den Pfeiltasten.

  1. Setze in Ball.cs in Start() rb = GetComponent<Rigidbody>();.
  2. Lies in FixedUpdate() float x = Input.GetAxis("Horizontal"); und float z = Input.GetAxis("Vertical"); aus und rufe dann rb.AddForce(new Vector3(x, 0f, z) * force); auf.

Drücke „Spielen“, klicke ins Spiel und bewege den Ball: Der Ball dreht sich, während er sich bewegt. Drücke dann „Prüfen“.

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.
    }
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground