Des cubes qui vous suivent
Prenons l’exemple d’une scène avec un FPS et plusieurs cubes. Les cubes ont un script attaché et doivent respecter le comportement suivant :
• si le joueur est à moins de 9 mètres du cube,
celui- ci se met à suivre le personnage ;
• si le joueur s’éloigne à plus de 9 mètres,
les cubes doivent arrêter de le suivre ;
• si le joueur est à moins de 3 mètres du cube,
ce dernier devient rouge ;
• enfin, si le joueur touche un cube,
il doit disparaître – le cube, pas le joueur. En résumé, il va falloir créer un script qui fait que les cubes suivent le joueur s’il se rapproche d’eux. Le cube, qui peut représenter un danger, un ennemi, devient rouge si le joueur s’en rapproche trop et disparaît s’il rentre en contact avec le joueur. Il faudrait dans un deuxième temps prévoir une baisse des points de vie du joueur ou quelque chose du genre. Voilà ce que cela pourrait donner : using System. Collections; public class Cube : MonoBehaviour { public GameObject joueur; void Update() f( GetDistance() < 0.9f) { Destroy( this. gameObject); f( GetDistance() < 3) { GetComponent< Renderer>(). material. color = Color. red; f( GetDistance() < 9) ransform. LookAt( joueur. transform. position); transform. Translate( Vector3. forward * Time. deltaTime * 1.5f); public float GetDistance() { return Vector3. Distance( this. transform. position, joueur. transform. position); } } // fin de déclaration de la classe Cube La méthode GetDistance permet de savoir à quelle distance le cube se trouve du joueur et ainsi de savoir quelle action exécuter. La fonction transform. LookAt demande clairement à un objet d’en « regarder » un autre. C’est aussi ce qui va permettre d’orienter les cubes face au joueur. Ensuite, une translation est appliquée afin de déplacer les cubes en direction du joueur. GetDistance nous renvoie la distance entre le cube et le joueur et il est ainsi aisé de vérifier à combien de mètres ils se trouvent l’un de l’autre et d’appliquer la translation adaptée si nécessaire. Dans le cas contraire, si les limites de distance intermédiaires ne sont pas atteintes, le cube restera immobile. Et pour cela, il suffira de ne rien faire.