Attrapez un bonus
Leçon 15 sur 19 du cours Jeu Unity : casse-briques de Coddy.
Un bonus détecte lui-même la capture : son collider de déclenchement touche celui de la raquette, et les deux corps sont cinématiques, ce qui suffit pour OnTriggerEnter. Il tombe aussi au-delà de la balle, alors il vérifie d’abord le tag.
Une énumération nomme les types, et chaque prefab définit le sien dans l’Inspector, de sorte qu’un seul script sert aux deux :
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>() trouve le script Paddle sur l’objet touché par le bonus. Pour l’instant, Wide ne fait qu’afficher un message ; la prochaine leçon fera grandir la raquette.
Défi
DifficileAttrape une amélioration qui tombe avec la raquette.
- Dans
PowerUp, ajoutepublic enum Kind { Wide, Multiball }etpublic Kind kind;(chaque prefab définit son type). - Ajoute
OnTriggerEnter(Collider other): retourne sauf siother.CompareTag("Paddle"); une amélioration Wide appelleother.GetComponent<Paddle>().Widen();, puisDestroy(gameObject); - Dans
Paddle, ajoutepublic void Widen(), qui afficheWide paddlepour le moment.
Appuie sur « Jouer » et attrape une amélioration verte : elle disparaît et la Console affiche Wide paddle. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // les faces intérieures des murs latéraux se trouvent à -wallX et 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);
}
}
Toutes les leçons de Jeu Unity : casse-briques
4Bonus
Objets qui tombentEntraînez-vous par vous-même : Playground Unity