Raccogli un potenziamento
Lezione 15 di 19 del corso Gioco in Unity: Rompi i mattoni di Coddy.
Il potenziamento rileva da solo la presa: il suo collider di attivazione tocca il collider della racchetta, ed entrambi i corpi sono cinematici, il che è sufficiente per OnTriggerEnter. Cade anche oltre la palla, quindi controlla prima il tag.
Un enum assegna un nome ai tipi, e ogni prefab imposta il proprio nell'Inspector, così uno script serve per entrambi:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>() trova lo script Paddle sull'oggetto toccato dal potenziamento. Per ora, Wide registra solo un messaggio; nella prossima lezione la racchetta si ingrandirà.
Sfida
DifficilePrendi un potenziamento che cade con la racchetta.
- In
PowerUp, aggiungipublic enum Kind { Wide, Multiball }epublic Kind kind;(ogni prefab imposta il proprio tipo). - Aggiungi
OnTriggerEnter(Collider other): esci seother.CompareTag("Paddle")è falso; un potenziamento Wide chiamaother.GetComponent<Paddle>().Widen();, poiDestroy(gameObject); - In
Paddle, aggiungipublic void Widen()che per ora registraWide paddle.
Premi Gioca e prendi un potenziamento verde: scompare e la Console mostra Wide paddle. Poi premi Verifica.
Provalo tu
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // le facce interne delle pareti laterali si trovano a -wallX e 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);
}
}
Tutte le lezioni di Gioco in Unity: Rompi i mattoni
4Potenziamenti
CaduteEsercitati da solo: Playground Unity