Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Bewege den Schläger zwischen den Wänden.

  1. Erzeuge in Paddles FixedUpdate() float input: -1, solange die linke Pfeiltaste oder A gedrückt wird, 1 für die rechte Pfeiltaste oder D, andernfalls 0.
  2. Berechne Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
  3. Begrenze mit float half = transform.localScale.x / 2f; target.x zwischen -wallX + half und wallX - half, dann rb.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