RaycastHit
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 36 sur 71.
Physics.Raycast peut aussi te dire ce qu’il a touché. Ajoute out RaycastHit hit après la direction : lorsque la méthode renvoie true, elle a rempli hit avec les détails. out permet à une méthode C# de renvoyer une valeur supplémentaire par l’intermédiaire d’une variable que tu lui fournis. Ce télémètre indique ce qu’il vise et à quelle distance cela se trouve lorsque tu appuies sur Espace :
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, 50f))
{
Debug.Log(hit.collider.name + " is " + hit.distance + " units away");
}
}
}Orienté vers un mur dont la face avant se trouve à 12 unités, il affiche Wall is 12 units away. Les autres champs : hit.point est le point du monde où le rayon a touché la surface, hit.normal est la direction vers laquelle la surface est orientée à cet endroit ((0, 1, 0) sur un sol plat), et hit.transform est le Transform de l’objet touché. Avec hit.collider.gameObject, tu accèdes à tout ce qui le concerne, comme son tag.
Lis hit uniquement à l’intérieur du if. Lorsque le rayon ne touche rien, Raycast renvoie false et hit ne contient rien d’utile : son collider est null.
Défi
MoyenAjoute un viseur laser à l’arme : un point rouge à l’endroit où le laser touche.
- Dans
Update(), lancePhysics.Raycast(transform.position, transform.forward, out RaycastHit hit, range). - Lorsqu’il touche quelque chose, appelle
dot.gameObject.SetActive(true);et définisdot.position = hit.point;. - Lorsqu’il ne touche rien, appelle
dot.gameObject.SetActive(false);.
Appuie sur « Jouer » et tourne l’arme : le point glisse sur le mur et les caisses. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class LaserSight : MonoBehaviour
{
public Transform dot;
public float range = 15f;
void Update()
{
// Place dot là où le laser rencontre une surface ; masque-le lorsque le laser ne touche rien.
}
}
Toutes les leçons de Physique et gameplay
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity