Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: IPIDE en Mayo 06, 2010, 05:33:13 PM

Título: Problema con distance_to_object
Publicado por: IPIDE en Mayo 06, 2010, 05:33:13 PM
Hola amigos.

?Saben c?mo puedo indicar en el siguiente c?digo que el enemigo aumente la velocidad y cambie a un determinado sprite cuando el obj_personaje est? a 100 p?xeles en horizontal?

argument0=obj_personaje;

if distance_to_object(obj_personaje)<100{}

Les agradezco cualquier ayuda o explicaci?n. Un saludo.
Título: Re: Problema con distance_to_object
Publicado por: Texic en Mayo 06, 2010, 06:46:28 PM
Creo q lo q buscas es algo asi
if abs(x-obj_personaje.x)<100{}
Título: Re: Problema con distance_to_object
Publicado por: Alfonsos1 en Mayo 06, 2010, 11:08:02 PM
if(abs(distance_to_object(obj_personaje)-100)<5)//5 es el margen de error
Título: Re: Problema con distance_to_object
Publicado por: cristalbeast en Mayo 07, 2010, 03:07:03 AM
Yo no me fio mucho con el distance_to_object(), uso mejor el m?todo de Texic

if(abs(x-obj_personaje_principal.x)<100)
    {
    sprite_index=spr_corriendo
    hspeed=nueva velocidad
    }
else
    {
    sprite_index=spr_caminando
    hspeed=velocidad antigua
    }

-Esto va en step.
-x-obj_personaje_principal.x va a checar la distancia del enemigo al        personaje.
-abs() devuelve la distancia con signo positivo.
-sprite_index cambiar el sprite
-hspeed velocidad

Espero que algo as? te pueda ayudar, si  no, esa es la idea general jejeje
Título: Re: Problema con distance_to_object
Publicado por: IPIDE en Mayo 07, 2010, 06:30:04 PM
Hola, much?simas gracias a todos por contestar.

Les dir? el efecto que estoy buscando, porque quiz? este script no sea el m?s adecuado para conseguirlo. Quiero que el enemigo se comporte como el jugador del f?tbol americano del Super Mario World, que corr?a hacia el jugador cuando este se acercaba. Algo he conseguido, pero falla por ejemplo en cuanto tiene que cambiar el sprite del enemigo seg?n est? el jugador a la derecha o a la izquierda.

(evento Step del enemigo)

if distance_to_object(obj_personaje)<100{

if sprite_index=enemigo_D{sprite_index=enemigo_corriendo_D;}
if sprite_index=enemigo_I{sprite_index=enemigo_corriendo_I;}
hspeed=4
}

if distance_to_object(obj_personaje)>100{

if sprite_index=enemigo_corriendo_D{sprite_index=enemigo_D;}
if sprite_index=enemigo_corriendo_I{sprite_index=enemigo_I;}
hspeed=2
}

Les ruego cualquier ayuda o sugerencia. Un saludo.
Título: Re: Problema con distance_to_object
Publicado por: Texic en Mayo 07, 2010, 07:00:56 PM
if x>obj_personaje.x {sprite_index=enemigo_D}
else obj_personaje.x {sprite_index=enemigo_I}

if distance_to_object(obj_personaje)<100{
if sprite_index=enemigo_D{sprite_index=enemigo_corriendo_D;}
if sprite_index=enemigo_I{sprite_index=enemigo_corriendo_I;}
hspeed=4
}

if distance_to_object(obj_personaje)>100{
if sprite_index=enemigo_corriendo_D{sprite_index=enemigo_D;}
if sprite_index=enemigo_corriendo_I{sprite_index=enemigo_I;}
hspeed=2
}

Pues ahi seria algo como lo que quieres. Date cuenta de que la sprite, por ej enemigo_D, se cambia en el principio del codigo, luego con esa como base chequea y pone la sprite para correr, es un punto de referencia, no es que siempre vas a ver la sprite enemigo_D. Mejor confia en mi y pruebalo  XD