#0 

21-12-2006 23:10:38

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

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


#1 

22-12-2006 08:14:25

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
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


#2 

22-12-2006 10:40:04

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

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


#3 

23-12-2006 02:34:48

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
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


#4 

23-12-2006 05:19:59

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

merci ! wink

Hors ligne


#5 

26-12-2006 11:10:03

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

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

Code:

‘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

Dernière modification par Jerry Kan (26-12-2006 11:31:08)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
118 invités en ligne
Aucun membre connecté
RSS Feed