#0 

31-08-2010 19:08:01

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

bonjour à tous

je suis en train de regarder un peu le fonctionnement des événements et j'ai un petit soucis que je n'arrive pas à résoudre:
en fait j'ai réussi à faire avancer, reculer, pivoter mon perso mais pas moyen de le faire sauter...en fait si, il saute, mais il ne s'arrête pas :p
voici comment je déclare l'event:

//*******************SAUTER**********************
     if(m_Nmodele != 0
    && event.EventType == irr::EET_KEY_INPUT_EVENT
    && event.KeyInput.Key == irr::KEY_KEY_C)
    {
       
        if(event.KeyInput.Key == irr::KEY_KEY_C)
            sauter = true;

        else
            sauter = false;


           
       
        return true;
           
        
       
    }

quelqu'un pourrait il m'expliquer le code à employer pour arrêter l'event tout de suite après qu'il se soit produit svp?

j'ai cherché pas mal de temps mais je n'ai vraiment pas trouvé la solution, à vrai dire je pense surtout que j'ai encore beaucoup de progrès à faire en C++.... wink

EDIT: j'ai essayé avec event.KeyInput.PressedDown (comme pour marche, courrir, etc) mais le problème c'est que biensur, dès que je relache la touche l'event s'arrête (donc si j'appuie que 0.5sec sur la touche, mon perso va faire un tout petit saut ^^)

Dernière modification par magikus59 (31-08-2010 20:33:05)

Hors ligne


#1 

31-08-2010 20:32:58

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

il faut bien que tu utilises PressedDown mais remettre "sauter" à false seulement quand ton animation "sauter" est finie
soit tu définis le temps qu'il met, soit tu fixes un numéro de frame utilisé par tout tes perso, une sorte de norme, et quand l'animation arrive à telle frame, tu stop "sauter"

Hors ligne


#2 

31-08-2010 20:36:45

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

merci!

ou alors peut être mettre à false seulement quand le perso touche le sol, je regarderai à ça, en attendant je vais faire une de tes solutions smile

EDIT: je viens de penser à un truc...tes solutions iraient parfaitement pour un terrain plat, mais pour moi ça n'ira pas vu qu'au final je n'aurai jamais le même saut (terrain montagneux)
il faudra donc bien que je fasse un systeme pour détecter quand mon perso aura atteint le sol (ça va surement être chaud mais bon, je trouverai)

si jamais quelqu'un a une solution plus simple je suis preneur

Dernière modification par magikus59 (31-08-2010 20:44:15)

Hors ligne


#3 

31-08-2010 21:02:34

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

ça dépend si tu utilises la physique ou pas, et encore, parce que globalement si tu utilises un système de frame ton perso ne change pas de place enfin juste les polygones qui "bougent"
perso c'est le plus simple pour commencer, après oui c'est sûr il vaut mieux faire une détection du sol, tout dépend de ton niveau

Hors ligne


#4 

01-09-2010 15:05:43

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

en fait là il ne s'agit pas d'une animation mais vraiment d'un déplacement:

if(m_Nmodele != 0 && sauter == true)
    {
       
        irr::core::vector3df v = m_Nmodele->getPosition();   
         v.Y += 3.f;   
        m_Nmodele->setPosition(v);   
   
    }

parce que comme tu dis, avec une anim mon mesh va rester statique en fin de compte

mon niveau ben...débutant mais je vais pas me prendre la tête la dessus, j'y reviendrai plus tard
mais je pense que ça doit être faisable...en gros:
-je recupère la position de mon perso
-je recupère le Y de mon terrain à cet endroit
- et pour mon event, je le stop dès que mon perso à atteint ce point Y

hmm ça parait simple dit comme ça lol (mais je trouverai bien, je ne demande pas le code, si je n'y arrive pas c'est que je ne suis pas prêt ^^)

Hors ligne


#5 

02-09-2010 03:35:25

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

globalement se que tu dit est exacte, mais si tu début je ne te dit pas tout wink
il y a tout de fois quelque problème majeur solvable avec de la physique "pure et dure"

-obligation de connaitre le node en dessous du "perso"
-obligation de connaitre "l'épaisseur" on va dire, pour savoir ou est le contact avec le perso
-peut devenir "très" complex pour détecteur le node soujacent pour un débutant, étant donenr que tu ne va peut-être (que) te basé sur un terrain
      donc en admétant que tu face un contact avec seulement le terrain, que se passerat il si ton perso rencontre en "autre" node ? smile

je ne sais pas dans quel genre de project tu te lance, mais aujourd'hui un logiciel qui comprend la 3d est presque toujours acompagner d'un moteur physique
-blender et 3dmax -> bullet physics
-fallout / oblivions -> physix je croix
-diablo 3 -> havok
-et la plupar des logiciel free/open source/amateur

enfin tout sa pour te dire que quoi qu'il arrive tu arrivera a un point ou tu voudras utiliser la physique ...
mais ma fois tu peut utiliser les "outils" d'irrlicht en question de "physique", enfin c'est plus de la détection de collision pas plus ... sa te suffiras sans aucun doute dans un premier "temps / pas ?", mais pas de vélociter / force / friction / etc .. smile

ps: j'espère que sa peut aider, je suis un peut dans un état de .. uhm .. flémingite mental ?, entre "dormire / manger et rester sur le pc" ... wink

Hors ligne


#6 

02-09-2010 15:09:02

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

merci pour les précisions magun
en fait je veux juste tenter de ma faire un petit RPG mais attention je ne parle pas de faire un mmorpg qui roxxx à mort hein, je fais juste ça pour le plaisir (et ça me plait d'ailleurs ^^)

donc je ne cherche pas forcement d'avoir un bon rendu physique, la collision avec le terrain et les mesh de la scène (et encore, peut être même pas avec tout) me suffira amplement
d'ailleurs pour la collision avec tout les mesh y'a apparemment pas de moyen simple, je pense donc réunir plusieurs mesh en 1 (par exemple au lieu de définir une a une les collions des arbre, je regrouperai tout mes arbres, ou une partie dans un seul mesh afin d'y définir qu'une seule collision smile)

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
882 membres
1429 sujets
11119 messages
Dernier membre inscrit: LiseBuisson96
20 invités en ligne
Aucun membre connecté
RSS Feed