Złap wzmocnienie
Lekcja 15 z 19 w kursie Gra w Unity: Brick Breaker w Coddy.
Wzmocnienie wykrywa złapanie samodzielnie: jego collider wyzwalający dotyka collidera paletki, a oba ciała są kinematyczne — to wystarczy, aby zadziałało OnTriggerEnter. Spada też obok piłki, dlatego najpierw sprawdza tag.
Wyliczenie określa rodzaje, a każdy prefab ustawia własny w Inspectorze, więc jeden skrypt obsługuje oba:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>() znajduje skrypt Paddle na obiekcie, którego dotknęło wzmocnienie. Na razie opcja Wide tylko wyświetla komunikat; w następnej lekcji paletka będzie się powiększać.
Wyzwanie
TrudnyZłap spadający PowerUp paletką.
- W
PowerUpdodajpublic enum Kind { Wide, Multiball }ipublic Kind kind;(każdy prefab ustawia swój rodzaj). - Dodaj
OnTriggerEnter(Collider other): zakończ działanie, jeśliother.CompareTag("Paddle")nie jest prawdą; PowerUp typu Wide wywołujeother.GetComponent<Paddle>().Widen();, a następnieDestroy(gameObject); - W
Paddledodajpublic void Widen(), która na razie zapisuje w loguWide paddle.
Naciśnij „Graj” i złap zielony PowerUp: zniknie, a w konsoli pojawi się komunikat Wide paddle. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // wewnętrzne powierzchnie bocznych ścian znajdują się na pozycjach -wallX i wallX
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float input = 0f;
if (Keyboard.current.leftArrowKey.isPressed || Keyboard.current.aKey.isPressed) input -= 1f;
if (Keyboard.current.rightArrowKey.isPressed || Keyboard.current.dKey.isPressed) input += 1f;
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
float halfWidth = transform.localScale.x / 2f;
target.x = Mathf.Clamp(target.x, -wallX + halfWidth, wallX - halfWidth);
rb.MovePosition(target);
}
}
Wszystkie lekcje w sekcji Gra w Unity: Brick Breaker
4Wzmocnienia
Spadające przedmiotyPoćwicz samodzielnie: Edytor online Unity