AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Display Star Wars Unlimited Ombres de la Galaxie : où l’acheter ?
Voir le deal

 

 Changement de direction d'une AI

Aller en bas 
2 participants
AuteurMessage
narcibrook
Pas mal



Messages : 32

Changement de direction d'une AI Empty
MessageSujet: Changement de direction d'une AI   Changement de direction d'une AI EmptyMar 5 Juin 2012 - 16:20

Hat Bonjour; je bloque sur un problème de direction pour une AI.
Je voudrais que mon AI change de direction dès qu'elle rencontre un mur, mais c'est bête, j'y arrive pas triste

J'ai récupéré ce script dans l'exemple "treasure" fournis avec GameMaker :

Dans "Script"(appelé "direction_AI"):

Code:

if (hspeed == 0)
{
if (random(3)<1 && place_free(x-2,y))
{
hspeed = -2; vspeed = 0;
}
if (random(3)<1 && place_free(x+2,y))
{
hspeed =  2; vspeed = 0;
}
}
else
{
if (random(3)<1 && place_free(x,y-2))
{
hspeed = 0; vspeed = -2;
}
if (random(3)<1 && place_free(x,y+2))
{
hspeed = 0; vspeed =  2;
}
}

Dans "Create
Code:

motion_set(choose(0,90,180,270),2);

Dans "Step"
Code:

image_angle=direction;


if !place_free(x,y)
{
hspeed=-hspeed;
vspeed=-vspeed;
direction_AI();
}
if place_snapped(17,17)
{
direction_AI()
}

Ca marche nickel, a un détail près, c'est que l'AI change de direction a n'importe quel moment, alors que je veux que ça change de direction uniquement quand il y a collision avec un object... rouge

Merci pour vos conseil !!!
J'essai de le modifier, mais j'arrive a rien... Hat
Revenir en haut Aller en bas
-Coco-
Utilisateur confirmé: Rang ***
-Coco-


Messages : 545
Localisation : Grenoble - Montpellier
Projet Actuel : Orion VII - 0%

Changement de direction d'une AI Empty
MessageSujet: Re: Changement de direction d'une AI   Changement de direction d'une AI EmptyMar 5 Juin 2012 - 18:47

C'est possible que l'objet correspondant à ton AI soit "Solid", dans tel cas le place_free() détecterait peut être ton personnage.
Regarde dans l'objet, décoche la case "Solid" si elle est cochée, et si ce n'est pas le cas, désolé je ne vois pas d'où ça vient :p

_________________
Oh, snap.
Revenir en haut Aller en bas
narcibrook
Pas mal



Messages : 32

Changement de direction d'une AI Empty
MessageSujet: Re: Changement de direction d'une AI   Changement de direction d'une AI EmptyMer 6 Juin 2012 - 0:24

En fait je pense que c'est la partie "if place_snappe...etc" qui fait le changement de direction mais si je le supprime plus rien ne marche triste2 il me faut faire un code différent je crois ...
Revenir en haut Aller en bas
narcibrook
Pas mal



Messages : 32

Changement de direction d'une AI Empty
MessageSujet: Re: Changement de direction d'une AI   Changement de direction d'une AI EmptySam 9 Juin 2012 - 6:59

C'est bon j'ai "pondu" un script que fait exactement ce que je voulais (sûrement très mal optimisée mais bon gnii )

Dans create:
Code:
lib_gauche=0;
lib_droite=0;
lib_devant=0;
lib_derriere=0;

Dans step:
Code:
//Pour orienter le sprite en fonction de la direction.
image_angle=direction;

//Pour avancer.
xx=lengthdir_x(1,direction);
yy=lengthdir_y(1,direction);
if (place_free(x+xx,y)){x+=xx;}
if (place_free(x,y+yy)){y+=yy;}

//Pour vérifier si la place est libre des quatre coté de l'object en fonction de la  direction.
if place_free(x+lengthdir_x(1,direction+90),y+lengthdir_y(1,direction+90))lib_gauche=0; else lib_gauche=1;
if place_free(x+lengthdir_x(1,direction-90),y+lengthdir_y(1,direction-90))lib_droite=0; else lib_droite=1;
if place_free(x+lengthdir_x(1,direction),y+lengthdir_y(1,direction))lib_devant=0; else lib_devant=1;
if place_free(x+lengthdir_x(1,direction+180),y+lengthdir_y(1,direction+180))lib_derriere=0; else lib_derriere=1;


//Pour changer de direction aléatoirement en fonction des places libres0
if (lib_devant=1)&&(lib_droite=1)&&(lib_gauche=1)&&(lib_derriere=1) {exit}
else if (lib_devant=1)&&(lib_droite=1)&&(lib_gauche=1) {direction+=180;}
else if (lib_devant=1)&&(lib_gauche=1) {direction-=choose(90,180);}
else if (lib_devant=1)&&(lib_droite=1) {direction+=choose(90,180);}
else if (lib_devant=1) {direction+=choose(90,-90,180);}

Maintenant, je fait appel a toutes les bonnes volontés qui pourraient me dire comment optimiser le code, s'il est possible d'avoir le meme résultat avec un code plus léger, car je suis sûr que je me suis compliqué la vie Confused Merci Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





Changement de direction d'une AI Empty
MessageSujet: Re: Changement de direction d'une AI   Changement de direction d'une AI Empty

Revenir en haut Aller en bas
 
Changement de direction d'une AI
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» changement de x et y selon direction sur une action
» changement d'image
» Changement de resolution
» changement du volume
» Changement de forme

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: