Menu
CoddyTech

Start

Lekcja 2 z 19 w kursie Gra w Unity: Brick Breaker w Coddy.

Piłka czeka na paletce, aż gracz ją wystrzeli. Do tego czasu Update() umieszcza ją na górze paletki w każdej klatce, więc porusza się tam, gdzie paletka, a zmienna typu bool pamięta, czy piłka już poleciała:

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

Rigidbody piłki nie podlega grawitacji, więc prędkość ustawiona raz sprawia, że piłka leci prosto. wasPressedThisFrame ma wartość true tylko w klatce, w której klawisz zostaje wciśnięty, więc odczytuj ją w Update(). Aby lecieć z dokładnie określoną prędkością w dowolnym kierunku, ustaw długość wektora kierunku na 1 za pomocą .normalized, a następnie pomnóż go: new Vector3(3f, 4f, 0f).normalized * 10f sprawia, że piłka leci z prędkością 10 jednostek na sekundę.

challenge icon

Wyzwanie

Łatwy

Piłka porusza się razem z paletką, aż spacja ją wystrzeli.

  1. W Ball dodaj bool launched; oraz public void Launch(Vector3 direction): launched = true; i rb.linearVelocity = direction.normalized * speed;
  2. W Update() zakończ działanie, jeśli piłka została wystrzelona; w przeciwnym razie umieść ją w punkcie paddle.position + Vector3.up * 0.5f.
  3. Gdy spacja wasPressedThisFrame, wywołaj Launch(new Vector3(0.3f, 1f, 0f)).

Naciśnij „Graj”, poruszaj paletką, a następnie naciśnij spację: piłka poleci w górę i zatrzyma się na pierwszej ścianie (odbicie pojawi się w następnej lekcji). Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;
using UnityEngine.InputSystem;

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

    Rigidbody rb;

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

    // Następnie: piłka pozostaje na paletce, dopóki naciśnięcie Space jej nie wystrzeli.
}

Wszystkie lekcje w sekcji Gra w Unity: Brick Breaker

Poćwicz samodzielnie: Edytor online Unity