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 ![]()
Hors ligne
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
22-12-2006 09:40:04
- Jerry Kan
- Membres
- Date d'inscription:
- Messages: 265
- IP: 82.243.77.149
- Courriel
merci pour le code ![]()
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
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
.
@+
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
23-12-2006 04:19:59
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 !
Hors ligne



