Pegue um power-up
Lição 15 de 19 do curso Jogo Unity: Quebra-Tijolos da Coddy.
Um bônus percebe a captura por conta própria: seu colisor de gatilho toca o colisor da raquete, e ambos os corpos são cinemáticos, o que basta para OnTriggerEnter. Ele também passa pela bola, então verifica a tag primeiro.
Um enum nomeia os tipos, e cada prefab define o seu no Inspector, então um script serve para ambos:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>() encontra o script Paddle no objeto que o bônus tocou. Por enquanto, Widen apenas registra uma mensagem; na próxima lição, a raquete vai crescer.
Desafio
DifícilPegue um bônus que está caindo com a raquete.
- Em
PowerUp, adicionepublic enum Kind { Wide, Multiball }epublic Kind kind;(cada prefab define seu tipo). - Adicione
OnTriggerEnter(Collider other): retorne a menos queother.CompareTag("Paddle"); um bônus Wide chamaother.GetComponent<Paddle>().Widen();e, em seguida,Destroy(gameObject); - Em
Paddle, adicionepublic void Widen()que, por enquanto, registraWide paddle.
Pressione “Jogar” e pegue um bônus verde: ele desaparece e o Console exibe Wide paddle. Em seguida, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // as faces internas das paredes laterais estão em -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);
}
}
Todas as lições de Jogo Unity: Quebra-Tijolos
Pratique por conta própria: Playground de Unity