Wystrzelenie
Lekcja 2 z 16 w kursie Gra w Unity: Zbijanie klocków w Coddy.
Piłka czeka na paletce, aż gracz ją wystrzeli. Do tego czasu skrypt umieszcza ją co klatkę na paletce, więc porusza się tam, gdzie ona, a wartość bool zapamiętuje, czy piłka została już wystrzelona. Wystrzelenie jednorazowo ustawia linearVelocity obiektu Rigidbody. Grawitacja w Rigidbody piłki jest wyłączona, więc od tej chwili piłka leci po linii prostej z tą prędkością, aż w coś uderzy.
Spławik wędkarski działa tak samo: zwisa pod szczytówką wędki aż do zarzucenia.
bool cast;
void Update()
{
if (cast) return;
transform.position = rodTip.position + Vector3.down * 1.5f;
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
cast = true;
rb.linearVelocity = new Vector3(4f, 3f, 0f);
}
}wasPressedThisFrame ma wartość true tylko w klatce, w której klawisz zostaje wciśnięty, więc odczytuje się ją w Update(), która uruchamia się raz na klatkę. Spławik leci z prędkością równą długości wektora (4, 3, 0), czyli 5 jednostek na sekundę. Aby wystrzelić go z dokładną prędkością w dowolnym kierunku, ustaw długość wektora kierunku na 1 jednostkę za pomocą .normalized, a następnie pomnóż go przez prędkość.
Wyzwanie
ŁatwyW Ball:
- Dodaj
bool launched. - Napisz
public void Launch(Vector3 direction): ustawialaunchedna true, alinearVelocityobiektu Rigidbody na kierunek o długości 1 jednostki pomnożony przezspeed. - Dodaj
Update(). Gdy piłka nie została wystrzelona, umieszcza ją 0.5 jednostki nad pozycją paletki, a po naciśnięciu spacji wywołujeLaunch(new Vector3(0.3f, 1f, 0f)).
Piłka nie odbija się jeszcze, więc zatrzymuje się od razu przy pierwszej napotkanej ścianie: następna lekcja to naprawi.
Naciśnij Play, porusz paletką, wystrzel piłkę, a następnie naciśnij Check.
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 Space jej nie wystrzeli.
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.