Des cubes qui vous suivent

L'Informaticien - - DEV -

Pre­nons l’exemple d’une scène avec un FPS et plu­sieurs cubes. Les cubes ont un script at­ta­ché et doivent res­pec­ter le com­por­te­ment sui­vant :

• si le joueur est à moins de 9 mètres du cube,

ce­lui- ci se met à suivre le per­son­nage ;

• si le joueur s’éloigne à plus de 9 mètres,

les cubes doivent ar­rê­ter de le suivre ;

• si le joueur est à moins de 3 mètres du cube,

ce der­nier de­vient rouge ;

• en­fin, si le joueur touche un cube,

il doit dis­pa­raître – le cube, pas le joueur. En ré­su­mé, il va fal­loir créer un script qui fait que les cubes suivent le joueur s’il se rap­proche d’eux. Le cube, qui peut re­pré­sen­ter un dan­ger, un en­ne­mi, de­vient rouge si le joueur s’en rap­proche trop et dis­pa­raît s’il rentre en con­tact avec le joueur. Il fau­drait dans un deuxième temps pré­voir une baisse des points de vie du joueur ou quelque chose du genre. Voi­là ce que ce­la pour­rait don­ner : using Sys­tem. Col­lec­tions; pu­blic class Cube : Mo­noBe­ha­viour { pu­blic Ga­meOb­ject joueur; void Up­date() f( GetDis­tance() < 0.9f) { Des­troy( this. ga­meOb­ject); f( GetDis­tance() < 3) { GetCom­ponent< Ren­de­rer>(). ma­te­rial. co­lor = Co­lor. red; f( GetDis­tance() < 9) rans­form. LookAt( joueur. trans­form. po­si­tion); trans­form. Trans­late( Vec­tor3. for­ward * Time. del­taTime * 1.5f); pu­blic float GetDis­tance() { re­turn Vec­tor3. Dis­tance( this. trans­form. po­si­tion, joueur. trans­form. po­si­tion); } } // fin de dé­cla­ra­tion de la classe Cube La mé­thode GetDis­tance per­met de sa­voir à quelle dis­tance le cube se trouve du joueur et ain­si de sa­voir quelle ac­tion exé­cu­ter. La fonc­tion trans­form. LookAt de­mande clai­re­ment à un ob­jet d’en « re­gar­der » un autre. C’est aus­si ce qui va per­mettre d’orien­ter les cubes face au joueur. En­suite, une trans­la­tion est ap­pli­quée afin de dé­pla­cer les cubes en di­rec­tion du joueur. GetDis­tance nous ren­voie la dis­tance entre le cube et le joueur et il est ain­si ai­sé de vé­ri­fier à com­bien de mètres ils se trouvent l’un de l’autre et d’ap­pli­quer la trans­la­tion adap­tée si né­ces­saire. Dans le cas contraire, si les li­mites de dis­tance in­ter­mé­diaires ne sont pas at­teintes, le cube res­te­ra im­mo­bile. Et pour ce­la, il suf­fi­ra de ne rien faire.

Newspapers in French

Newspapers from France

© PressReader. All rights reserved.