Der Schläger
Lektion 1 von 19 im Kurs Unity-Spiel: Brick Breaker von Coddy.
In diesem Kurs baust du Brick Breaker in 3D, ein Feature der Lektion: ein Schläger, ein springender Ball, eine Ziegelwand, Leben, Level und Power-ups. Alles bewegt sich in der x-y-Ebene bei z 0. Die Skripte Paddle, Ball, Brick, GameManager und PowerUp sind vorerst Platzhalter. „Spielen“ startet das Spiel; „Prüfen“ bewertet es.
Der Schläger hat einen kinematischen Rigidbody, der mit rb.MovePosition in FixedUpdate() bewegt wird, sodass die Physik seine Bewegung erkennt. Ein kinematischer Körper bewegt sich durch die Wände hindurch, daher hält das Skript ihn innerhalb der Begrenzungen. Wird die Mitte an der Wand begrenzt, liegt die Hälfte des Schlägers in der Wand: Die Grenze ist die Wandposition minus der halben Breite. Bei Wänden bei -6 und 6 und einem 2 Einheiten breiten Schläger:
float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);Die Mitte bleibt zwischen -5 und 5, sodass die Enden genau an den Wänden stoppen. Wenn du die Breite bei jedem Schritt aus transform.localScale.x ausliest, bleibt die Begrenzung korrekt, falls der Schläger größer wird.
Aufgabe
EinfachBewege den Schläger zwischen den Wänden.
- Erzeuge in
PaddlesFixedUpdate()float input: -1, solange die linke Pfeiltaste oder A gedrückt wird, 1 für die rechte Pfeiltaste oder D, andernfalls 0. - Berechne
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime; - Begrenze mit
float half = transform.localScale.x / 2f;target.xzwischen-wallX + halfundwallX - half, dannrb.MovePosition(target);
Drücke „Spielen“ und bewege den Schläger bis zu beiden Wänden: An jeder hält er an. Danach „Prüfen“.
Probier es selbst
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // Die Innenseiten der Seitenwände liegen bei -wallX und wallX
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Bewege dich mit den Pfeiltasten oder A und D und bleibe zwischen den Wänden.
}
}
Alle Lektionen in Unity-Spiel: Brick Breaker
Übe selbstständig: Unity-Playground