Bonjour,
en comemnçant, j'explique que je travaille en as2, mais vu que je doute avoir une réponse dans cette partie du forum, je poste ici, en voulant savoir qu'est-ce que vous feriez en as3 pour le même problème.
Je fais un jeu de plateforme en flash:
http://www.coco-game.com/humpty-dumpty-neuf.htm
J'ai un problème avec la détection plancher/perso. J'arrive à 'bricoler' une solution fonctionnel, mais je veux plus, je veux un jeu optimisé. Je vous explique. J'ai un mc 'Perso' qui marche sur une ligne appelé pl1 (plancher1 autrement dit). Si on appuie sur Space, la fonction 'saute = 22' s'applique. Or, en admettant que le perso saute et que ses pieds n'atteignent pas le rebord de la corniche (pl2) vu que c tout le perso qui est pris en compte, même si c la tête qui touche le rebord, il saute et retombe sur la corniche. Or, il ne faut pas que ce soit sont corps, mais seulement c pieds qui soit pris en compte avec le plancher. Pour ça, j'ai fait un deuxième mc, et ça devient _this.va (ou _root.perso.va). Or, Flash ne prends JAMAIS en compte ce mc 'va'. Si je formule comme ça, plus rien ne fonctionne. Or, pour la collision avec les éléments durs (pommes, branches) j'ai perso.ouch. Le mc 'ouch' est pris en compte, comme d'autre mc de détection (selon le cas). Or, pour la marche, rien... c perso ou c rien. Pas de perso.va, ou perso.ouch... rien! Il fonctionne seulement a la racine on dirait... Pourquoi cet entêtement?
Voici mon code:
Et tant qu'a y être, j'aimerais être capable de détecter la collision, et non le toucher. Je m'explique : je voudrais que lorsqu'on saute et retombe, on entende un bruit de pied. Dans le moment, j'ai timer ce bruit et l'ais mit dans un mc (jumpy). Le bruit arrive grosso modo dans le bon moment. C'est du bricolage à souhait. Mais avec hitTest, flash comprend "tant que tu touche au plancher", mais c'est "au moment où je tombe sur le plancher" qu'il me faudrait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 onClipEvent(load){ saut = 0 _root.stop() } onClipEvent(enterFrame){ if(saut < -22){ saut = -22 } _y -= saut //pour qu'il retombe s'il n'est pas sur une plateforme if(this.va.hitTest(_root.pl1)){ _y = _root.pl1._y -95 } //pour qu'il bloque sur le sol if(this.va.hitTest(_root.pl2)){ _y = _root.pl2._y -95; } if(this.va.hitTest(_root.pl1)) { //pour qu'il ne puisse sauter que quand il touche le sol if(Key.isDown(Key.SPACE)){ // en appyant sur ESPACE saut = 22 ;//hauteur du saut _root.jumpy.gotoAndPlay(2); } }
Merci d'avance!
Ivady
Partager