L'Informaticien

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 comporteme­nt 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îtr­e – 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ésente­r 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. Collection­s; public class Cube : MonoBehavi­our { public GameObject joueur; void Update() f( GetDistanc­e() < 0.9f) { Destroy( this. gameObject); f( GetDistanc­e() < 3) { GetCompone­nt< Renderer>(). material. color = Color. red; f( GetDistanc­e() < 9) ransform. LookAt( joueur. transform. position); transform. Translate( Vector3. forward * Time. deltaTime * 1.5f); public float GetDistanc­e() { return Vector3. Distance( this. transform. position, joueur. transform. position); } } // fin de déclaratio­n de la classe Cube La méthode GetDistanc­e 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 translatio­n est appliquée afin de déplacer les cubes en direction du joueur. GetDistanc­e 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 translatio­n adaptée si nécessaire. Dans le cas contraire, si les limites de distance intermédia­ires ne sont pas atteintes, le cube restera immobile. Et pour cela, il suffira de ne rien faire.

Newspapers in French

Newspapers from France