kujaff Très bonne participation
Messages : 127 Localisation : Dans mon Atelier Projet Actuel : Puzzle/Reflexion
| Sujet: [Résolu] [IA] Action celon comportement Ven 22 Nov 2013 - 22:06 | |
| Salut, J'ai commencer a faire mon IA qui fonctionnait niquel, mais j'ai voulu pousser le truc encore plus loin en lui initalisant un comportement (normal, agressif, très agressif). Pour cela, dans mon create de l'obj_enemi_1 j'ai crée une variable comportement = random(2)+1 (soit 1, soit 2, soit 3) mon ennemi est composé de 5 parties, la tête, le corps, les bras, l'arme. J'ai voulue faire en sorte que si le comportement == 1 alors il tire ça, etc. Vue que les membres suivent la position du héro, et que selon le comportement il tire a la tête ou pas, j'ai aussi mit des conditions pour les sprites (les tires a la tête se font a l'aide d'une variable aléatoire qui s’initialise avant de tiré.) Le soucis, c'est qu'une fois que je suis repérer, il est censé me pointer et me tirer dessus (celons le comportement qui a été initialisé) mais rien ne se passe... Voici mon code, et désolé s'il est "crade" et surement incompréhensible, mais j'aimerai bien savoir pourquoi ça bug ^^' - Code:
-
if obj_enemi_1.aggro == 1 { permission_tir +=1 }
if permission_tir > 20 { persmission_tir = 20 }
if (magasin_ak47 <= 0 && recharge == 0) { sound_play(sd_reload) recharge = 1 alarm[1] = 45; obj_enemi_1.marche = 0 obj_enemi_1.speed = 0 }
if (obj_enemi_1.comportement == 3) { if (obj_enemi_1.aggro == 1 && tir == 0 && permission_tir >= 20 && magasin_ak47 > 0 && obj_enemi_1.poursuite == 0) { sound_play(sd_rafalex3_ak47) tir = 1 obj_enemi_1.marche = 0 alarm[2] = 25; alarm[0]=25; magasin_ak47 -=3;
if direction == 0 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi); instance_create(x+lengthdir_x(40,image_angle),y+lengthdir_y(40,image_angle),obj_balle_AK47_enemi); instance_create(x+lengthdir_x(30,image_angle),y+lengthdir_y(30,image_angle),obj_balle_AK47_enemi); } if direction == 180 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi_bis); instance_create(x+lengthdir_x(40,image_angle),y+lengthdir_y(40,image_angle),obj_balle_AK47_enemi_bis); instance_create(x+lengthdir_x(30,image_angle),y+lengthdir_y(30,image_angle),obj_balle_AK47_enemi_bis); } }
if (obj_enemi_1.aggro == 1 && tir == 0 && permission_tir >= 20 && magasin_ak47 > 0 && obj_enemi_1.poursuite == 1) { sound_play(sd_ak47) tir = 1 alarm[2] = 50; alarm[0]=50; magasin_ak47 -=3;
if direction == 0 { if direction == 0 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi); instance_create(x+lengthdir_x(40,image_angle),y+lengthdir_y(40,image_angle),obj_balle_AK47_enemi); instance_create(x+lengthdir_x(30,image_angle),y+lengthdir_y(30,image_angle),obj_balle_AK47_enemi); } if direction == 180 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi_bis); instance_create(x+lengthdir_x(40,image_angle),y+lengthdir_y(40,image_angle),obj_balle_AK47_enemi_bis); instance_create(x+lengthdir_x(30,image_angle),y+lengthdir_y(30,image_angle),obj_balle_AK47_enemi_bis); } } } }
if (obj_enemi_1.comportement == 2) { if (obj_enemi_1.aggro == 1 && tir == 0 && permission_tir >= 20 && magasin_ak47 > 0 && obj_enemi_1.poursuite == 0) { sound_play(sd_rafalex3_ak47) tir = 1 obj_enemi_1.marche = 0 alarm[2] = 25; alarm[0]=25; magasin_ak47 -=3;
if direction == 0 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi); instance_create(x+lengthdir_x(40,image_angle),y+lengthdir_y(40,image_angle),obj_balle_AK47_enemi); instance_create(x+lengthdir_x(30,image_angle),y+lengthdir_y(30,image_angle),obj_balle_AK47_enemi); } if direction == 180 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi_bis); instance_create(x+lengthdir_x(40,image_angle),y+lengthdir_y(40,image_angle),obj_balle_AK47_enemi_bis); instance_create(x+lengthdir_x(30,image_angle),y+lengthdir_y(30,image_angle),obj_balle_AK47_enemi_bis); } }
if (obj_enemi_1.aggro == 1 && tir == 0 && permission_tir >= 20 && magasin_ak47 > 0 && obj_enemi_1.poursuite == 1) { sound_play(sd_ak47) tir = 1 alarm[2] = 50; alarm[0]=50; magasin_ak47 -=1;
if direction == 0 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi); } if direction == 180 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi_bis); } } }
if (obj_enemi_1.comportement == 1) { if (obj_enemi_1.aggro == 1 && tir == 0 && permission_tir >= 20 && magasin_ak47 > 0 && obj_enemi_1.poursuite == 0) { sound_play(sd_ak47) tir = 1 alarm[2] = 50; alarm[0]=50; magasin_ak47 -=1;
if direction == 0 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi); } if direction == 180 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi_bis); } }
if (obj_enemi_1.aggro == 1 && tir == 0 && permission_tir >= 20 && magasin_ak47 > 0 && obj_enemi_1.poursuite == 1) { sound_play(sd_ak47) tir = 1 alarm[2] = 50; alarm[0]=50; magasin_ak47 -=1;
if direction == 0 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi); } if direction == 180 { instance_create(x+lengthdir_x(50,image_angle),y+lengthdir_y(50,image_angle),obj_balle_AK47_enemi_bis); } } }
if global.pause == 0 { if (obj_enemi_1.marche == 1 && obj_enemi_1.aggro == 0 && obj_enemi_1.recherche == 0) { if obj_enemi_1.direction == 0 { image_angle = 290 sprite_index = spr_AK47_droite } if obj_enemi_1.direction == 180 { image_angle = 240 sprite_index = spr_AK47_gauche } } if (obj_enemi_1.marche == 1 && obj_enemi_1.recherche == 1 && obj_enemi_1.aggro == 0) { if obj_enemi_1.direction == 0 { image_angle = 290 sprite_index = spr_AK47_droite }
if obj_enemi_1.direction == 180 { image_angle = 240 sprite_index = spr_AK47_gauche } }
if (obj_enemi_1.marche == 0 && obj_enemi_1.aggro == 1) { if obj_enemi_1.comportement == 1 { if obj_hero.x < obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 89 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 89 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_gauche_enemi1 }
if obj_hero.x > obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 89 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 89 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_droit_enemi1 } }
else if obj_enemi_1.comportement == 2 { if obj_hero.x < obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 84 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 84 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_gauche_enemi1 }
if obj_hero.x > obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 84 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 84 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_droit_enemi1 } }
else if obj_enemi_1.comportement == 3 { if obj_hero.x < obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 79 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 79 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_gauche_enemi1 }
if obj_hero.x > obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 79 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 79 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_droit_enemi1 } } }
if (obj_enemi_1.marche == 1 && obj_enemi_1.aggro == 1) { if obj_enemi_1.comportement == 1 { if obj_hero.x < obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 89 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 89 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_gauche_enemi1 }
if obj_hero.x > obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 89 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 89 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_droit_enemi1 } }
if obj_enemi_1.comportement == 2 { if obj_hero.x < obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 84 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 84 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_gauche_enemi1 }
if obj_hero.x > obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 84 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 84 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_droit_enemi1 } }
if obj_enemi_1.comportement == 3 { if obj_hero.x < obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 79 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 79 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_gauche_enemi1 }
if obj_hero.x > obj_enemi_1.x { if obj_ak47_enemi.vise >= 0 && obj_ak47_enemi.vise < 79 { image_angle = point_direction(x,y,obj_hitbox_corps_hero.x,obj_hitbox_corps_hero.y) } if obj_ak47_enemi.vise >= 79 && obj_ak47_enemi.vise < 100 { image_angle = point_direction(x,y,obj_hitbox_tete_hero.x,obj_hitbox_tete_hero.y) } sprite_index = spr_bras_avant_droit_enemi1 } } }
} Cordialement.
Dernière édition par kujaff le Sam 23 Nov 2013 - 10:03, édité 1 fois |
|