remus38
Messages postés69Date d'inscriptionvendredi 17 septembre 2004StatutMembreDernière intervention 7 mai 2006
-
9 déc. 2004 à 13:47
paladin33
Messages postés3Date d'inscriptionmercredi 6 juillet 2005StatutMembreDernière intervention16 juillet 2005
-
16 juil. 2005 à 17:58
Bonjour,
voila je us en train de faire mon premier jeu et j'ai quelque problemes. Le jeu est simple : on dirige un tank vu de dessus, des ennemis arrive et avec le tank on les detruits.
Problèmes :
1- Quand je tire avec le tank et que je maintiens le bouton de tir et que je bouge le tank, le missile bouge aussi. J'ai utilisé un MovieClip que je lance quand je tire. Dois-je faire comme ça ou non.
2- une fois que vous m'aurez aidé à résoudre ce problème, comment je dois faire pour pouvoir tirer plusieurs coups à la suite.
3- Pour en revenir à la question 1, je pense que je n'utilise pas la bonne methode car je ne vois pas coment arreter la course du missile apres la destruction d'un ennemi.
John_Doe_88
Messages postés606Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention13 décembre 2006 9 déc. 2004 à 14:07
1-Il faudrait voir le code qui gere le deplacement du mc, mais le deplacement du missile ne doit pas dépendre de celui du char !
2-il faut dupliquer ce clip en AS, fonction attachmovie
3-regarde la doc de la fonction hitTest pour detecter les collisions et aussi unloadmovie pour supprimer un clip de la scene.
remus38
Messages postés69Date d'inscriptionvendredi 17 septembre 2004StatutMembreDernière intervention 7 mai 2006 9 déc. 2004 à 15:39
J'ai utilisé un clip ou le tout droit
En action j'ai :
onclipevent(enterframe){
if key = espace
positionner le missile au niveau du tank
lancer le clip : _root.missile.play()
John_Doe_88
Messages postés606Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention13 décembre 2006 10 déc. 2004 à 09:55
Ok. Alors le code du déplacement du missile stp.. Comment le missile bouge ?
Deja quelques commentaires :
1/ je vois pas comment tu peux gerer le déplacement du missile sans avoir une variable ou tu mets sa direction (c'est pour ça que j'aimerais bien voir comment tu gères le déplacement, je pense que ça vient de la)
2/remplace ton onClipEvent(enterFrame) par onClipEvent(keyDown), ça sera plus efficace
3/si tu veux pouvoir lancer plusieurs missiles il faut mettre ce code
if (Key.isDown(Key.SPACE)) {
_root.attachmovie("tir", "tir"+nbmissiles, nbmissiles);
_root["tir"+nbmissiles]._x = this._x;
_root["tir"+nbmissiles]._y = this._y;
_root["tir"+nbmissiles].play();
}
en considerant nbmissiles une variable comptant le nombre de missiles affichés
remus38
Messages postés69Date d'inscriptionvendredi 17 septembre 2004StatutMembreDernière intervention 7 mai 2006 10 déc. 2004 à 10:46
Ben en fait pour le deplacement du missile j'ai simplement créé une animation où le missile par verticalement
Si tu veux mieux comprendre ce que j'ai fait je peux t'envoyer mon fichier
John_Doe_88
Messages postés606Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention13 décembre 2006 10 déc. 2004 à 11:25
Ok. Alors c normal que le missile bouge aussi parce que ton code :
if (Key.isDown(Key.SPACE)) {
_root.tir._x = this._x; //a chaque fois que tu appuies sur espace le missile prend la coordonnée x du tank
_root.tir._y = this._y;
_root.tir.play();
}
Avec un seul missile il faudrait que tu sache si il est lancé ou pas pour éventuellement empêcher de le replacer. Mais autant directement passer à plusieurs missiles, tu n'auras plus ce probleme.
Apres c comme tu veux : soit tu m'envoie ton code et je te le fais pour plusieurs missiles (mais bon tu n'auras pas fait grand chose, ce qui n'est pas top pour toi), soit si tu es motivé et tu essaies tout seul et je veux bien t'aider (je pense t'avoir donné les éléments pour commencer).
Il faut mettre un code du style ca sur ton missile :
onClipEvent(enterFrame) {
this._y--;
if (this._x < 0) { //le missile sort de la scene
this.unloadMovie(); //destruction du clip
}
else if (this.hitTest(enemy._x, enemy._y)) { //rencontre u ennemi
this.unloadMovie(); //destruction du missile et de l'ennemi
_root.enemy.unloadMovie();
}
}
Enfin j'essaie de donner des éléments, mais c dur de détailler tout comment tu fais comme ça par message.
Mais franchement essaie c pas difficile et je me tiens à ta disposition.
@+
remus38
Messages postés69Date d'inscriptionvendredi 17 septembre 2004StatutMembreDernière intervention 7 mai 2006 10 déc. 2004 à 11:35
Je vais essayer tout seul mais je vais quand meme t'envoyer mon fichier au cas ou. Comme ca tu pourras mieux voir ce que j'ai fais et tu pourras mieux m'expliquer en cas de problème.
Merci
remus38
Messages postés69Date d'inscriptionvendredi 17 septembre 2004StatutMembreDernière intervention 7 mai 2006 10 déc. 2004 à 17:20
en fait j'ai pas compris comment on doir faire pour que le tir soit independant
et ni comment en tirer plusieurs ( nbmissiles je ne vois pas à quoi il sert)
Avec ca a chaque fois que tu appuies sur espace le tir reprend la position du char. Donc il faut que si le missile est tiré tu ne refasse pas ça. Donc il faut rajouter une variable pour savoir si le missile est tiré :
et avec ca il faut que quand le missile est détruit (renconter un ennemi ou sort de la scene) tu fasse : tire =false;
Comment en tirer plusieurs : à chaque fois que tu tires tu crées une nouvelle occurence du clip tir (avec attachmovie).
nbmissiles sert uniquement à différencier tes missiles : quand tu attaches une nouvellle occurence de ton clip tir, tu dois lui donner un nom différent de ceux qui sont sur la scene, donc on utilise nbmissiles, qu'on incrémente à chaque fois qu'on crée un missile, comme ça ils ont tous des noms différents.
Pour moi ça me semble juste mais ca marche pas. J'ai declare une variable nbmissiles que j'initialise à zero au debut de l'application et quand j'appuie sur espace je l'incremente pour que nom change.
Autre chose, quand je fais dans missile
onClipEvent(load){
this.stop();
}
onClipEvent (enterFrame) {
if (this._y<0) {
this.stop();
}
else if (this.hitTest(ennemi1._x, ennemi1._y)){
this.unloadMovie();
_root.ennemi1.unloadMovie();
}
}
ben le unloadMovie marche pas
Je t'envoie ce que j'ai fait pour que tu comprenne mieux
remus38
Messages postés69Date d'inscriptionvendredi 17 septembre 2004StatutMembreDernière intervention 7 mai 2006 11 déc. 2004 à 18:47
J'ai oublié, j'ai une autre question : comment on fait pour utiliser hitTest pourun intervalle de points et non pour un seul point. Parce que sinon je pense qu'il faut que les coordonnées du missile et celles de l'ennemi soit exactement les memes.
John_Doe_88
Messages postés606Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention13 décembre 2006 13 déc. 2004 à 13:29
enemy.hitTest(teteMissile.x, tetemissile.y);
avec tetemissile un point représentant la tete du missile (que tu calcules d'apres les coordonnées de ton missile. C'est logique
Comme ça tu testes si la tête du missile rencontre l'ennemi.
Sinon je regarde ton .fla ce soir ou au pire demain
@+
----------------------------------------------------------
Le probleme john, le ton code etait incomplet, il n'incrémentait pas "nbmissiles". J'avais modifier ton code en conséquence, mais impossible de le faire marcher. il ne se passait rien qd j'appuyais sur espace.. J'ai pas réussi a comprendre pourquoi ça ne marcher pas.
John_Doe_88
Messages postés606Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention13 décembre 2006 16 juil. 2005 à 17:03
Si j'avais fait un code complet je l'aurais mis dans la catégorie
sources. Et vu comme j'avais quand même pas mal expliqué j'aurais
préféré un "merci".
Ton code marchait pas parce que tu dis n'imp et ta pas l'air capable de
recopier un code (nbmissiles++ ca veut dire incrémenter nbmissiles et
je vois pas l'incrémentation de nb dans le tien).
paladin33
Messages postés3Date d'inscriptionmercredi 6 juillet 2005StatutMembreDernière intervention16 juillet 2005 16 juil. 2005 à 17:58
je t'ai rien de désagréable que je sache pour que tu me parles ainsi...
Entre parenthese je me suis appuyé sur ton code pour sortir le mien et je ne fesais que de demander ton aide.
En attendant le mien est complet et marche pour ceux qui en ont besoin.