Menu
CoddyTech

Starten

Lektion 2 von 19 im Kurs Unity-Spiel: Brick Breaker von Coddy.

Der Ball wartet auf dem Schläger, bis der Spieler ihn startet. Bis dahin setzt Update() ihn in jedem Frame auf den Schläger, sodass er sich überallhin bewegt, wohin sich der Schläger bewegt, und ein bool merkt sich, ob er bereits losgeflogen ist:

void Update()
{
    if (launched) return;
    transform.position = paddle.position + Vector3.up * 0.5f;
}

Der Rigidbody des Balls hat keine Schwerkraft, daher sorgt eine einmal festgelegte Geschwindigkeit dafür, dass er geradlinig weiterfliegt. wasPressedThisFrame ist nur in dem Frame true, in dem eine Taste gedrückt wird, also lies es in Update() aus. Damit der Ball in jede Richtung mit exakt derselben Geschwindigkeit fliegt, bringe die Richtung mit .normalized auf eine Länge von 1 Einheit und multipliziere sie dann: new Vector3(3f, 4f, 0f).normalized * 10f fliegt mit 10 Einheiten pro Sekunde.

challenge icon

Aufgabe

Einfach

Der Ball bleibt auf dem Schläger, bis die Leertaste ihn startet.

  1. Füge in Ball bool launched; und public void Launch(Vector3 direction) hinzu: launched = true; und rb.linearVelocity = direction.normalized * speed;
  2. Gib in Update() zurück, wenn der Ball gestartet wurde; andernfalls setze den Ball auf paddle.position + Vector3.up * 0.5f.
  3. Wenn die Leertaste wasPressedThisFrame erfüllt, rufe Launch(new Vector3(0.3f, 1f, 0f)) auf.

Drücke „Spielen“, bewege den Schläger und drücke dann die Leertaste: Der Ball fliegt nach oben und bleibt an der ersten Wand stehen (das Abprallen kommt als Nächstes). Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;
using UnityEngine.InputSystem;

public class Ball : MonoBehaviour
{
    public Transform paddle;
    public float speed = 9f;

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Als Nächstes: Der Ball bleibt auf dem Schläger, bis Space ihn losschickt.
}

Alle Lektionen in Unity-Spiel: Brick Breaker

Übe selbstständig: Unity-Playground