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.
Aufgabe
EinfachDer Ball bleibt auf dem Schläger, bis die Leertaste ihn startet.
- Füge in
Ballbool launched;undpublic void Launch(Vector3 direction)hinzu:launched = true;undrb.linearVelocity = direction.normalized * speed; - Gib in
Update()zurück, wenn der Ball gestartet wurde; andernfalls setze den Ball aufpaddle.position + Vector3.up * 0.5f. - Wenn die Leertaste
wasPressedThisFrameerfüllt, rufeLaunch(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