| | IA d'un object | |
| | Auteur | Message |
---|
albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: IA d'un object Mer 18 Déc 2013 - 15:36 | |
| Bonjour ! J'ai récament chercher a faire une IA sur GM8 mais il y a TOUJOURS un soucis , mon ia est super simple mais j'arrive jamais a faire ce que je veut ^^ Bref je vous explique , j'ai : un obj_player : mon personnage un object15 ( oui je sais je dois changer le nom ^^ ) : qui lui est le monstre 4 object de topaz22 ( système de plateforme ) pour les object solide et en pente Ce que je veut faire : Faire en sorte tout simplement que le monstre test avec un colision line si il y a un mur devant lui alors il ne doit pas allez vers le personnage , mais si il y a rien entre lui et le player alors le monstre se déplace vers le Player et a se moment la dès qu'il y a une colision le monstre enlève de la vie ( dans mon cas c'est "article_vie" ) au player TOUTE les 1-5 seconde , enfin une temps pas trop abusé ^^ Mon problème : _Dès que je met mon monstre , mon monstre one shoot le player alors qu'il n'y a pas de colision _Mon monstre fonce vers mon personnage sans tester si il y a un mur devant lui ( si il y a un murt devant lui il fonce quand meme ) . Mon code : Code STEP pour que le monstre test si il y a les object solide des 4 object de topaz22 ( système de plateforme ). Je voulai faire en sorte que dès que le monstre test qu'il y a un object devant lui alors une variable augmente de 30 , comme il y a 5 object , cela fait que ma Variable est a 150 si il n'y a pas d'object devant elle ( 30*5 = 150 ) si la var est a 150 alors le monstre part vers le Player . - Code:
-
if !collision_line (x,y,obj_solide.x,obj_solide.y,self,1,0) { article_colision +=30 }
if !collision_line (x,y,obj_pente_monte.x,obj_pente_monte.y,self,1,0) { article_colision +=30 }
if !collision_line (x,y,obj_pente_descend.x,obj_pente_descend.y,self,1,0) { article_colision +=30 }
if !collision_line (x,y,obj_pente_inverse_bas.x,obj_pente_inverse_bas.y,self,1,0) { article_colision +=30 }
if !collision_line (x,y,obj_pente_inverse_haut.x,obj_pente_inverse_haut.y,self,1,0) { article_colision +=30 }
- Code:
-
if article_colision ==150 { move_towards_point(obj_Player.x, obj_Player.y, article_vitesse); article_colision =0 } Code pour le monstre en STEP pour que dès qu'il y a une colision le Player perd -1 point de vie toute les secondes . - Code:
-
if !place_meeting(obj_Player.x,obj_Player.y,obj_Player) { article_temps +=1 if article_temps=article_reset { global.vie -=1 } }
if article_temps=article_reset2
{ article_temps=1 } Merci beaucoup et énormément si vous savez pourquoi cela ne marche pas car mon cerveau va exploser ( malgré le petit code que c'est ^^) |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 15:46 | |
| J'ai pas tout vérifié, mais tes collision_line sont faux.
Tu tester la collision entre le monstre (x,y) et un objet de topaze (obj_solide.x,obj_solide.y) au lieu de tester la collision entre le monstre et le player!
|
| | | albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 16:50 | |
| if !place_meeting(obj_Player.x,obj_Player.y,obj_Player) je test la colision avec le player si je met obj_player , a moin que je me trompe ^^ |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 17:15 | |
| Mais tu ne veux pas savoir si il y a un objet_solide entre le monstre et le player? Et donc tester la collision avec un objet_solide entre la position du monstre et du joueur? |
| | | albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 17:24 | |
| Je voudrai avoir une colision entre le monstre et le player , mais je veut tester si il y a pas sur son chemin des mur , pour ne pas que le monstre ai un wall hack et puisse aller vers le player uniquement si c'est dans son champ de vision |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 17:29 | |
| c'est bien ce que je dis : Tu traces une ligne entre le player et le monstre, et tu veux savoir si il y a un mur sur cette ligne:
collision_line(x,y,obj_player.x,obj_player.y,obj_solid,1,1) |
| | | albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 17:34 | |
| ha ok pour cette ligne ^^ , j'avai mis pour le primier code : if !collision_line (x,y,obj_solide.x,obj_solide.y,self,1,0) ce qui est a peut prèt la meme chose mais je vais test ^^ |
| | | albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 17:38 | |
| Non apparament cela n'a rien changer , j'ai bien mis : - Code:
-
if !collision_line (x,y,obj_solide.x,obj_solide.y,self,1,1) { article_colision +=30 }
if !collision_line (x,y,obj_pente_monte.x,obj_pente_monte.y,self,1,1) { article_colision +=30 }
if !collision_line (x,y,obj_pente_descend.x,obj_pente_descend.y,self,1,1) { article_colision +=30 }
if !collision_line (x,y,obj_pente_inverse_bas.x,obj_pente_inverse_bas.y,self,1,1) { article_colision +=30 }
if !collision_line (x,y,obj_pente_inverse_haut.x,obj_pente_inverse_haut.y,self,1,1) { article_colision +=30 }
|
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: IA d'un object Mer 18 Déc 2013 - 22:39 | |
| Mais boudiou.... marque donc ce que j'ai marqué !!!
collision_line(OBJET_MONSTRE.x , OBJET_MONSTRE .y , OBJET_JOUEUR.x , OBJET_JOUEUR.y , OBJET_PENTE , 1 , 1 ) |
| | | albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: IA d'un object Jeu 19 Déc 2013 - 12:58 | |
| - Code:
-
if collision_line (self.x,self.y,obj_solide.x,obj_solide.y,obj_solide,1,1) { article_colision +=30 }
if collision_line (self.x,self.y,obj_Player.x,obj_Player.y,obj_pente_monte,1,1) { article_colision +=30 }
if collision_line (self.x,self.y,obj_Player.x,obj_Player.y,obj_pente_descend,1,1) { article_colision +=30 }
if collision_line (self.x,self.y,obj_Player.x,obj_Player.y,obj_pente_inverse_bas,1,1) { article_colision +=30 }
if collision_line (self.x,self.y,obj_Player.x,obj_Player.y,obj_pente_inverse_haut,1,1) { article_colision +=30 }
La mon monstre ne réagie plus x) |
| | | albisse Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: IA d'un object Ven 20 Déc 2013 - 17:29 | |
| Bon j'ai réussi a résoudre le problème que si le monstre ne voie pas le joueurs alors il ne peut pas le suivre en faisant un parent a chaque objet "mur" de ma map, qui est constamant sur le map , et tout simplement faire : - Code:
-
if !collision_line (self.x,self.y,obj_Player.x,obj_Player.y,obj_block,1,1) { move_towards_point(obj_Player.x, obj_Player.y, article_vitesse); } Sa marche très bien mais j'ai encore le problème que me monstre me Oneshoot direct alors qu'il ne me voie pas --" et sa c'st pas top top , si vous savez pourquoi cela arrive et aussi comment changé mon code pour que si il y a une colision avec le player alors le monstre va endommagé le player toute les 5 secondes . j'ai essayer : - Code:
-
if collision_circle(obj_Player.x,obj_Player.y,8,obj_Player,2,1) { article_temps +=1 if article_temps=article_reset { global.vie -=1 } }
if article_temps=article_reset2 { article_temps=0 } Mais sa me one shoot toujours .. |
| | | Contenu sponsorisé
| Sujet: Re: IA d'un object | |
| |
| | | | IA d'un object | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |