Raycast & tir
Sur cette page tu apprendras ce qu’est le raycast et comment l’ajouter à ton projet.
C’est quoi un Raycast, et pourquoi on tire avec?
Le raycast c’est un laser invisible et intouchable que l’on peut faire partir de n’importe ou et dans n’importe quelle direction. Unity peut détecter tous les éléments touchés par ce laser, et nous donner les informations de ces éléments.
Comme ce laser n’est pas lié à un objet physique, il n’est pas dépendant des propriétés physiques non plus. Ce qui veut dire qu’il ne risque pas d’échouer, de rater une collision, ou de partir trop vite ou pas assez vite.
Le script
Le Raycast le plus simple ce fait ainsi:
On commence par créer le laser, le ray. On lui donne une origine et une direction
Ici l’origine est un objet au choix (shootOrigin), et la direction est l’avant de cet objet.
Puis on utilise un “if” pour voir ce que le raycast a touché. Les paramètres en parenthèse ne sont pas tous obligatoires, seulement les deux premiers, mais voyons un peu a quoi ils servent tous:
- ray: le laser à utiliser
- out hit: pour stocker les infos sur les objets touchés
- Mathf.Infinity: la distance maximum du laser (ici l’infinie)
- LayerMask: si on veut exclure certains objets de la détection, on peut les mettre sur un “layer” et dire au raycast d’ignorer ce layer
Comme le Raycast est un élément de détection lié à des collisions, il vaut mieux l’utiliser dans la fonction FixedUpdate. Cette dernière fonctionne comme Update, mais est plus stable.
Cependant ce n’est pas toujours possible car des fois il faut l’associer à des inputs, et les inputs eux fonctionnent mieux dans Update. Il faut choisir au cas par cas. (priorité aux inputs, toujours)
Dans le cas du tir, le raycast fonctionne de paire avec SendMessage. Ce dernier permet de déclencher la fonction d’un objet touché par le raycast, et donc de lui faire faire ce qu’on veut.
Le message du Raycast.
Les 3 paramètres sont: la fonction à activer, qui l’a activé, et si un objet n’a pas la bonne fonction alors ne rien faire.
La réaction de l’objet touché, que l’on met dans un script dudit objet
Exemple dans un script (qui génère des morceaux depuis une liste au moment du hit)