Message #10584
Sujet: S'accroupir Irrlicht
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Création du message | 03-07-2012 18:29:00 | johnplayer |
Comme ça, je dirais qu'il faut capter l'événement du bouton affecté à la fonction "s'accroupir". Je suppose que tu as mis un animator de collision donc il faut voir s'il y a possibilité de modifier la collision en hauteur. La solution la plus propre serait de créer ta propre cameraFPS en reprenant le code d'irrlicht et en y ajoutant la création de la collision à la création de la camera et la fonction "s'accroupir" dans la KeyMap et en implémentant l'action associée. L'implémentation de la camera est dans "source/CSceneNodeAnimatorCameraFPS.cpp". Pour la keymap et l'enum KEY_ACTION, c'est dans "include/SKeyMap.h". Soit tu modifies le code source d'Irrlicht (ce que je ne ferais pas car c'est à refaire si tu changes de version entre temps), soit tu copies (en changeant les noms de fichier, de classe et d'enum) les fichiers "source/CSceneNodeAnimatorCameraFPS.cpp et .h" et "include/SKeyMap.h".
1/ ajouter EKA_ACCROUPIR à EKEY_ACTION; 2/ ajouter dans le constructeur "KeyMap.push_back(SKeyMap(EKA_ACCROUPIR, irr::KEY_LSHIFT));" (j'ai mis LSHIFT pour l'exemple mais tu mets ce que tu veux); 3/ dans "CSceneNodeAnimatorCameraFPS::animateNode(...)" tu as : Inspires t'en pour pour savoir comment accéder à l'animateur de collision et implémenter : if (CursorKeys[EKA_ACCROUPIR]) { /// change la hauteur de l'ellipse avec ISceneNodeAnimatorCollisionResponse::setEllipsoidTranslation(); } J'espère avoir été assez clair, je viens juste de regarder les sources donc c'est plus une piste qu'une solution. En tout cas, le principe est là. |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 110 invités en ligne membre en ligne: - RSS Feed |