#1 

21-12-2006 22:10:38

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 82.243.77.149
Courriel

c'est certainement un question bete, mais j'ai du mal a trouver une solution simple pour le probleme suivant :

j'ai une map pas plate, et je voudrais que lorsqu'un mesh se déplace dessus, il suive les évolutions du terrain, monte lorsqu'il y a une pente, etc ..

faut il laisser la "gravité Irrlicht" se charger de trouver la bonne position de l'objet ? dans ce cas comment fait on pour déplacer l'objet,
ou alors doit on forcément savoir quelque par quel est l'angle du terrain et sa hauteur, afin de faire le "setposition" au bon endroit ?


sinon, peut etre qu'un topic conception, ou architecture serai sympa pour ce genre de question non ? c'est quand meme relativement éloigné du C++

Bonne Soirée smile


Hors ligne


#2 

22-12-2006 07:14:25

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.16.139.195
Courriel  Site web

Salut,

Regarde avec ça :

Height = terrain->getHeight(Position de mon Objet X, Position de mon Objet Z);
MonObjet->SetPosition(core::vector3df(Position de mon Objet X,Height+Ma Hauteur Au Dessus,Position de mon Objet Z));


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

22-12-2006 09:40:04

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 82.243.77.149
Courriel

merci pour le code smile

j'ai une autre question, si je veux que son inclinaison suive ? par exemple si le terrain a une forte pente, un véhicule apparait avec de l'inclinaison ?
il y a une méthode pour récuperer le vecteur normal du terrain a cet endroit la ? je n'ai rien trouvé dans la classe terrain,


Hors ligne


#4 

23-12-2006 01:34:48

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.11.51.41
Courriel  Site web

Hello, alors pour ça t'a une solution qui me parrait la mieux adapté, sauf erreur de ma par.
Tu peux utiliser le code de l'exemple Collision du SDK dans lequel tu verras un truc du genre :
core::vector3df intersection;
core::triangle3df tri;
if (smgr->getSceneCollisionManager()->getCollisionPoint(line, selector, intersection, tri))
{//blablabla;}
Et là tu peux donc récup le Triangle "tri" en collision et par conséquent, je présume récupérer la normale de se triangle grace à getNormal ().
En fonction de la normale tu n'as plus qu'a aligner ton objet en rotation.
Je suis pas certains mais je m'attaquerai à ça de cette manière smile.
@+


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

23-12-2006 04:19:59

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 82.243.77.149
Courriel

merci ! wink


Hors ligne


#6 

26-12-2006 10:10:03

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 82.243.77.149
Courriel

pour info, je crois que la méthode
virtual f32 irr::scene::ITerrainSceneNode::getHeight ( f32 x,f32 y )

n'existe pas dans irrlicht 1.1

‘class irr::scene::ITerrainSceneNode’ has no member named ‘getHeight'

j'ai regardé dans le .h dans le dossier include et ya pas de méthode getHeight, par contre il est bien dans la 1.2, vive la 1.2 ! smile


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
120 invités en ligne
membre en ligne: -
RSS Feed