| besoin daide IA pour zombie [résolu] | |
|
|
|
Auteur | Message |
---|
cypobos Utilisateur moyen
Messages : 61
| Sujet: besoin daide IA pour zombie [résolu] Ven 4 Mai 2012 - 19:27 | |
| bonjour j'aurait besoin d'un coup de main car je veut faire en sorte que des zombie se dirige vers mon perso et change de sprite en fonction de si mon perso et a droite/gauche merci d'avance
Dernière édition par cypobos le Lun 7 Mai 2012 - 11:40, édité 1 fois |
|
| |
PsycKho Très bonne participation
Messages : 154 Projet Actuel : http://www.sharedojo.netai.net/
| Sujet: Re: besoin daide IA pour zombie [résolu] Ven 4 Mai 2012 - 20:56 | |
| Il y a sûrement des tutos et trucs similaires qui traînent pour ça... Tu pourrais chercher un peu : P - Code:
-
if instance_number(player)>0 { if point_distance(x,y,player.x,player.y)<500 { if player.x>x {x+=5; sprite_index=SPRITE_DROIT;}else{x-=5; sprite_index=SPRITE_GAUCHE;} } }
Pas testé, ça gère pas la collision et ça présente pas beau. Mais avec un peu d'imagination et de recherche, ça pourra aider un minimum j'espère. Bonne chance ^-^ |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Ven 4 Mai 2012 - 21:17 | |
| |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 11:17 | |
| sur t'on code il mindique une erreur a la ligne 5 position 45 et pour le déplacement j'ai trouver comment faire mais je cherche a changer le sprite en fonction de la position du joueur |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 11:30 | |
| quelque soit le code que je mette il m'indique un erreur quelque par principalement ou il n'y a pas d'erreur possible (else, {, }...) voici le code de changement de sprite que j'ai fait - Code:
-
if player.x>x {sprite_index=zombie D} if player.x<x {sprite_index=zombie G} |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 11:53 | |
| Lu. Si je t'ai passé des liens, ce n'était pas juste pour te répondre, c'était aussi pour te montrer que ta question avait déjà été posée. Comme visiblement tu refuses de faire un minimum de recherche, je vais citer ce lien que je t'ai pourtant passé : https://cbna.forumactif.com/t11239-resolu-faire-un-ennemi-a-la-mario?highlight=ennemi - Termite a écrit:
- image_xscale=-1 pour changer de direction, sprite_index=nouveau_sprite pour changer de sprite, tout est expliqué dans la doc.
Ce à quoi celui qui pose la question répond - Mray a écrit:
- j'ai fais
- Code:
-
if ( vspeed < 0 ) { sprite_index=ennemi_1 } if ( vspeed > 0 ) { sprite_index=ennemi_2 } J'ai mal fais ? Ça marche pas :/ Et on le corrige : - Termite a écrit:
- Primo, jamais un sprite par direction, c'est du suicide.
Juste un seul sprite qui est orienté vers la droite, ensuite tu fais :
if (vspeed<0) image_xscale=-1; i f(vspeed>0) image_xscale=1;
C'est plus mieux Donc ton code deviendrait : - Code:
-
if player.x>x image_xscale=1; if player.x<x image_xscale=-1; Et tu ne mettrais qu'un seul sprite de déplacement, celui où l'ennemi regarde vers la droite. Pour reprendre le code de PsycKho : - Code:
-
if instance_number(player)>0 { if point_distance(x,y,player.x,player.y)<500 { if sprite_index!=SPRITE_DROIT sprite_index=SPRITE_DROIT; if player.x>x {x+=5; image_xscale=1;}else{x-=5; image_xscale=-1;} } } Sinon pour ton erreur, peut-être que le nom de ton sprite ne devrait pas contenir d'espace. |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 18:36 | |
| sa marche pour le changement de sens du sprite mais si je saute au dessus du zombie il se décale d'une trentaine de pixel
et j'aimerait un conseil pour comment repartir les balle lors d'un tir de fusil a pompe |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 19:35 | |
| Montre ton code stp. Pour les balles du fusil à pompe, je ne sais pas comment c'est dans la vraie vie, mais si le principe c'est de partir dans tous les sens entre x degré et y degré avec x>y, alors tu n'a qu'à faire créer des objets balles avec une vitesse de tant, et une direction de random(x-y)+y. Attention, si tu veux faire partir les balles vers la droite, par exemple, entre 340 et 20 degrés, prends -20 au lieu de 340 dans tes calculs (et donc -20 joue le rôle de y et 20 celui de x) |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 20:40 | |
| pour mon code j'ai utiliser l'action "move towards" x:player.x y:416 speed:1.5 pour les déplacement et j'ai mit - Code:
-
if player.x>x image_xscale=1; if player.x<x image_xscale=-1; pour le sprite et lors du changement de sens du sprite (en sautant par dessus par exemple) il se decale d'une trentaine de pixel se n'est pas du au déplacement mais au changement du sprite (j'ai essayais en enlevant l'action move toward) pour le fusil a pompe c'est genial mais il y a une faible probabilité que toute les balle parte au même endroit et si je veut par exemple que 5 balle parte dans des direction prédéfini comment je fait pour ne pas avoir a créer 5 objet balle droite 5 objet balle gauche |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 22:24 | |
| Est-ce que ton sprite est constitué d'une grande partie vide ? Tu devrais centrer l'abscisse de ton sprite vers le "centre de gravité du sprite". Pour les balles, la fonction action_create_object_motion(obj,x,y,speed,direction) pourrait t'être utile. Je ne peux pas tester si cette fonction marche car je n'ai pas gm sous la main, donc au cas où, tu fais une boucle avec i allant de 0 à 4 dans laquelle tu mets k=instance_create(balle); k.direction=y+i*(x-y)/4; k.speed=vitesse;
par exemple. Euh x et y étant les paramètres que je t'ai expliqué tout à l'heure et non les variables de position.
Dernière édition par Johny Wessmuller le Dim 6 Mai 2012 - 10:12, édité 2 fois |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Sam 5 Mai 2012 - 23:29 | |
| pour le centre du sprite sa va probablement resoudre mon probleme mais je comprend rien a ton code pour le fusil a pompe car je ne connait casiment rien au gml et je ne sais pas quoi faire pour que si je touche un zombie je soit propulser dans la direction oposer |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 10:12 | |
| Ben normalement la fonction action_create_object_motion() répond à ton pb, elle crée un objet en lui donnant une direction et une vitesse. Du coup tu n'as qu'à créer un seul objet balle. Et si elle ne marche pas je t'ai donné une solution "manuelle".
Ma solution manuelle est dans une boucle qui fait varier i de 0 à 4, c'est à dire que le code dans la boucle va s'éxécuter 5 fois, nu fois pour i=0, puis pour i=1, puis pour i=2, puis pour i=3, puis pour i=4.
A chaque fois qu'il s'éxécute, il crée un objet balle (ah oui j'avais écris ennemi dsl la fatigue je vais éditer) avec instance create, et stocke l'id de cet objet dans une variable qu'on appele k. En effet la fonction instance create renvoie l'ID de l'objet créé. Ensuite il modifie la vitesse de cet instance en modifiant k.sped, puis sa direction en modifiant k.direction. Pour la direction, on lui fait prendre les 5 valeurs équidistantes les plus distantes de la plage [y,x], c'est à dire, pour i=0, la balle a y pour direction, puis pour i=1 elle a y+(x-y)/4, puis pour i=2, y+2*(x-y)/4, puis y+3*(x-y)/4 pour i=3, pour i=4 elle a pour direction y+4*(x-y)/4 soit x.
Mais tu peux aussi faire une boucle qui ne contient que action_create_object_motion(x,y,vitesse,y+i(x-y)/4), ou même faire encore plus à la main, tu fais 5 ois appel à cet fonction en définissant manuellement la direction de chaque balle.
Attention, les x et y qui ne sont pas en gras sont ceux dont je t'ai expliqué la définiton plus haut (j'avoue je n'aurai pas du prendre ces lettres), ceux qui sont en gras sont les (x,y) bien connus de la position.
Dernière édition par Johny Wessmuller le Dim 6 Mai 2012 - 10:57, édité 2 fois |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 10:51 | |
| j'ai encore un petit problème au niveau des balle j'ai réussi a faire un beau tir de rpg mais parfois les balles traversent le zombie ce qui implique pas de collision et donc pas de dégât au zombie peut être que c'est du a la texture de la balle (1 pixel noir)
j’hésite entre créer un nouveau sujet quand je demande de l'aide pour autre chose ou rester sur le même sujet, dans le 1er cas ça facilite la recherche de solution pour les autre membre dans le 2nd ça évite de surcharger le forum
Dernière édition par cypobos le Dim 6 Mai 2012 - 10:58, édité 1 fois |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 10:55 | |
| |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 11:04 | |
| je veut créer un explosif télécommandé mais j'ai un problème quand je peut en poser une infinité avant de les faire exploser |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 12:24 | |
| ?? Exprime toi clairement, là ça peut vouloir dire plusieurs trucs, exemple : ton problème peut être qu'il y a un problème (lequel ?) lorsque tu en pose une infinité avant de les faire exploser. Fin bref, fais par exemple dans l'objet perso. compteurExplosion=0;
if keyboard_check_pressed(toucheDeCreationDeBombe) { compteurExplosion=compteurExplosion+1; instance_create(bombe); }
Ensuite
if keyboard_check_pressed(toucheDExplosion) { compteurExplosion=compteurExplosion-1; with (bombe) { compteurExplosion=perso.compteurExplosion; if compteurExplosion=0 {//ici tu fais exploser la bombe} } }
Et dans l'objet bombe Dans le create tu fais compteurExplosion=perso.compteurExplosion;
Dernière édition par Johny Wessmuller le Dim 6 Mai 2012 - 18:11, édité 2 fois |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 12:48 | |
| en gros comment faire en sorte que si j'ai trois C4 dans la salle il ne lance pas de C4 et je n'est trouver aucun tuto qui explique comment faire en sorte qu'une explosion propulse les joueur et ennemi |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 13:13 | |
| je vais te faire un exemple gmk |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 13:48 | |
| merci |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 14:18 | |
| |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 14:33 | |
| j'ai 2 problème avec ton code 1 mon perso bouge ou qu'il soit par rapport a l'explosion 2 il continue de bouger après mais plus lentement |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 14:43 | |
| t'a recopié tous ce que j'ai fais dans ton jeu ? |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 14:50 | |
| nn juste la répulsion des explosion et le nombre max de bombe |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 15:07 | |
| à tu créer les évènement alarm ? |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 15:15 | |
| tu devrais je pense m'envoyer ton fichier, par ce que c'est un peut galère de ce rendre compte comme ça. |
|
| |
cypobos Utilisateur moyen
Messages : 61
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 15:41 | |
| tien j'ai supprimer la répulsion car sa pose problème pour mes autre test et amélioration et je sais pas comment faire pour qu'un contacte avec un zombie me propulse dans la direction opposer |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 18:08 | |
| Ton jeu est bien en vue sur le côté ? Pour la répulsion, c'est simple, tu fais dans la collision avec le zombie
//Tu peux passer le perso en invincible pour qu'il ne se fasse pas enchainer mais c'est pas //obligatoire. Si tu le fais met aussi une alarme pour qu'il redevienne vulnérable. Et tu mets tout //ce qui suit sous condition que le perso n'était pas en mode invincible.
if xprevious-zombie.xprevious>0 //Si le zombie était à ta gauche { if place_free(x+recul,y) x=x+recul; //tu pars vers la droite else move_contact_solid(0,recul); //dans la limite du possible } else //s'il était à ta droite { if place_free(x-recul,y) x=x-recul; else move_contact_solid(180,recul); } //Bien entendu tu remplaces recul par une variable ou un nombre. Ici x et y sont les variables de position, d'ailleurs pour enlever les ambiguïtés, les x>y dont je parlais tout à l'heure seront renommés en a>b.
Au fait mode invincible, ça n'existe pas, hein, c'est toi qui le crées, style une variable invincible qui est à true ou false et qui conditionne certains trucs, comme les effets de la collision avec le zombie vus précédemment. |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 18:53 | |
| - cypobos a écrit:
- en gros comment faire en sorte que si j'ai trois C4 dans la salle il ne lance pas de C4
OK, là je crois qu'en fait il te manque les bases. Écoute Lis, tu devrais faire un peu de théorie avant de te lancer dans tout ça parce que si tu as du mal à faire ça, c'est limite nous qui allons faire ton jeu (je ne dis pas ça méchamment). En gros ce que tu veux faire c'est limiter le nombre de C4. Il te faut donc savoir combien de C4 sont déjà utilisées et comparer avec le nombre maximal pour empêcher d'en mettre d'autres. En d'autres termes, il te faut un compteur de C4, et tester si le nombre du compteur est inférieur au nombre maximal et agir en fonction. Normalement si tu as pensé ça et que tu as les connaissances, tu as directement pensé variable pour "compteur" ou "nombre du compteur", condition pour " tester si le nombre du compteur est inférieur au nombre maximal" et intérieur de la condition pour "agir en fonction". Et si tu as un minimum de niveau, penser à ça te fait le réussir. Et si tu n'avais pas pensé à décomposer ton problème en ces étapes, soit tu manques d’expérience, soit tu n'as pas fait le minimum d'effort. Tout ça n'est pas écrit méchamment, mais juste pour te dire qu'il te manque l’expérience, le niveau, la volonté ou les connaissances. Bon si c'est la volonté (le minimum d'effort), on ne peut rien pour toi, mais pour tout le reste ça s'apprend avec des tutos (enfin l'experience non, mais pour ce genre de trucs oui quand même) Je veux bien te passer quelques codes que tu vas t'empresser d'utiliser sans les comprendre, mais tu ne progresseras pas (ou au ralenti) et tu reviendras tout le temps poser des questions que tu aurais résolu sans même avoir le temps de les voir comme un problème si tu t'étais documenté. Bref, je vais t'adapter le code que je t'ai fourni pour limiter le nombre de bombes à la variable nombreBombeMax. En gras les modifs. En souligné et italique les trucs que j'ai oublié de mettre. Dans le create de l'objet perso tu mets :
nombreBombeMax=3;compteurExplosion=0; Dans le step de l'objet perso : if keyboard_check_pressed(toucheDeCreationDeBombe) { if compteurExplosion<nombreBombeMax {compteurExplosion=compteurExplosion+1; instance_create(bombe); }} Ensuite if keyboard_check_pressed(toucheDExplosion) { if compteurExplosion>0 {compteurExplosion=compteurExplosion-1; with (bombe) { compteurExplosion=perso.compteurExplosion; if compteurExplosion==0 {//ici tu fais exploser la bombe} } }} Et dans l'objet bombe Dans le create tu fais compteurExplosion=perso.compteurExplosion; Bon voilà, voilà. Par contre, si tu fais exploser la bombe d'une autre manière, n'oublie pas de faire baisser perso.compteurExplosion. |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 19:28 | |
| |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: besoin daide IA pour zombie [résolu] Dim 6 Mai 2012 - 20:08 | |
| C'est bon, j'ai pu ouvrir le gmk, bien joué le je l'avais complètement oublié ! Sinon, pour le script avec action_create_object_motion, en D&D ça se dit . Et je ne sais pas si c'est exprès, mais les C4 s'accrochent aux murs. |
|
| |
Contenu sponsorisé
| Sujet: Re: besoin daide IA pour zombie [résolu] | |
| |
|
| |
| besoin daide IA pour zombie [résolu] | |
|