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ę.
Wyzwanie
ŁatwyPiłka porusza się razem z paletką, aż spacja ją wystrzeli.
- W
Balldodajbool launched;orazpublic void Launch(Vector3 direction):launched = true;irb.linearVelocity = direction.normalized * speed; - W
Update()zakończ działanie, jeśli piłka została wystrzelona; w przeciwnym razie umieść ją w punkciepaddle.position + Vector3.up * 0.5f. - Gdy spacja
wasPressedThisFrame, wywołajLaunch(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