Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: spreos22 en Febrero 13, 2010, 12:07:30 PM

Título: Comprovar distancia respecto al jugador
Publicado por: spreos22 en Febrero 13, 2010, 12:07:30 PM
C?mo compruevo la distancia respecto al jugador?
Estoy intentando hacer el "homing attack" en un juego de sonic. He intentado varias cosas como testear la variable Sonic.x y Sonic.y pero no me funciona.
Espero respuestas. Saludos ^^
Gracias por leer
Título: Re: Comprovar distancia respecto al jugador
Publicado por: Texic en Febrero 13, 2010, 12:24:36 PM
No se cual es el homing atack u.u
Sera q me estoy poniendo viejo?  :(
Bueno, no importa. Lo que tienes q usar es distance_to_object(Sonic), pero asegurate de usarlo
en el objeto que quieras que cheque donde esta sonic. T explico porq lo digo. Si verificas la distancia
de Sonic con un objeto del q hay multiples instancias y lo verificas desde el objeto sonic, solo t devolvera
la distancia con la primera instancia que se creo de ese objeto. Me maree xD
Sino puedes usar la funcion instance_nearest(Sonic.x,Sonic.y,Obj_Otro), pero t devolvera la instancia
de ese objeto mas cercana a Sonic, aunque tambien puede q t sirva
CitarNo se cual es el homing atack u.u

Bueno, suerte, espero q t sirva, salu2  :)
Título: Re: Comprovar distancia respecto al jugador
Publicado por: korosu en Febrero 13, 2010, 12:25:38 PM
prueba con if distance_to_object(el que sea)<=100{lo que siga....}

es lo unico que se que compruebe la distancia
Título: Re: Comprovar distancia respecto al jugador
Publicado por: Texic en Febrero 13, 2010, 12:26:49 PM
Aja! Por un segundito me adelant? a tu mensaje! Jajaja  XD
Título: Re: Comprovar distancia respecto al jugador
Publicado por: spreos22 en Febrero 13, 2010, 01:21:08 PM
CitarSi verificas la distancia
de Sonic con un objeto del q hay multiples instancias y lo verificas desde el objeto sonic, solo t devolvera
la distancia con la primera instancia que se creo de ese objeto. Me maree xD

El homing attack es un ataque de sonic en el que si est? en el aire y tiene cerca a un enemigo, al pulsar una tecla, sale disparado hacia ?l y lo destruye. No exist?a en sega Genesis, creo que se vio por primera vez en los juegos en 3d.

Ahora a lo que iba. He hecho en el evento step del objeto Target (el que representa un enemigo) Que si sonic esta en el aire (OnGround = false) y si est? a menos de 300 p?xels (he usado la funci?n que escribiste) que se active la variable Locked.

Entonces en sonic, en el evento Keboard S (no se si lo pone as? xd pero ya se entiende), pongo que si Target.Locked tiene el valor de true move towards a point y aqu? me quedo atascado, porque no se como referirme a la que est? "Locked" y con este sistema siempre salen dos o m?s en Locked si estan cerca. (He creado las acciones pertinentes para que se active y desactive locked, claro, pero ya se entiende que el sistema funciona xD)
Como hariais para que s?lo funcione con la instancia de target mas cercana?.
Título: Re: Comprovar distancia respecto al jugador
Publicado por: Texic en Febrero 13, 2010, 05:06:09 PM
Edit: Lo edite mal y borre el mensaje, perdon, espero q lo tengas guardado  :-[
Título: Re: Comprovar distancia respecto al jugador
Publicado por: spreos22 en Febrero 13, 2010, 10:07:28 PM
Cita de: Texic en Febrero 13, 2010, 05:06:09 PM
Woo, mucho quilombo de codigo a mi gusto  XD
Bueno, es mucho mas simple que eso de hecho
Target=instance_nearest(Sonic.x,Sonic.y,Enemigo)
if Onground=False and distance_to_object(Target)<=300 {locked=1}

En el evento keyboard pones
if locked=1 {move_towards_point(Target.x,Target.y)}

MUCHAS GRACIAS :D no conocia la funcion instance_nearest. Ahora ya puedo continuar. Muchas gracias :D:D



EDITO: S?lo una cosa. He estado pens?ndolo y no se me ocurre. Tengo una variable "FacingR" que comprueba la direccion de sonic (true = right y false = left claro xd). A partir de esto, puedo hacer que detecte como objetico solo las que tenga por delante y que est?n cerca?:S
Título: Re: Comprovar distancia respecto al jugador
Publicado por: Texic en Febrero 14, 2010, 03:53:57 PM
Wow, eso si que seria complicado...
Quizas descativando momentaneamente todos los objetos detras de sonic cuando busca el target
mas cercano y luego activandolos de vuelta
if FacingR=1 {instance_deactivate_region(0,0,Sonic.x,Sonic.y,1,1)}
if FacingR=0 {instance_deactivate_region(Sonic.x,Sonic.y,room_width,room_height,1,1)}
Target=instance_nearest(Sonic.x,Sonic.y,Enemigo)
instance_activate_all()
if Onground=False and distance_to_object(Target)<=300 {locked=1}

Pero la verdad no estoy seguro de que instance_nearest solo devuelva las instancias activadas y no todas
Bueno, esa es mi solucion provisioria, espero q te sirva, suerte con el juego  :)
Título: Re: Comprovar distancia respecto al jugador
Publicado por: spreos22 en Febrero 14, 2010, 04:20:30 PM
muchas gracias por el codigo. Todo esto en D&D es impossible no?.

He estado provando y funciona bien solo que solo cuando mira a la izquierda. Como no conozco esta funcion no tengo ni idea de que argumento se tiene que cambiar. :S he provado ya varias cosas. Mirando a la izquierda funciona bien.
Gracias por toda la ayuda.
Saludos
Título: Re: Comprovar distancia respecto al jugador
Publicado por: Texic en Febrero 14, 2010, 06:13:09 PM
Parece q me he equivocado un poco en el codigo  :-[
if FacingR=1 {instance_deactivate_region(0,0,Sonic.x,room_height,1,1)}
if FacingR=0 {instance_deactivate_region(Sonic.x,0,room_width,room_height,1,1)}
Target=instance_nearest(Sonic.x,Sonic.y,Enemigo)
instance_activate_all()
if Onground=False and distance_to_object(Target)<=300 {locked=1}

No me habia dado cuenta de que la Y realmente no importa, tiene que tomar toda
la region en ese sector de arriba abajo.
Pruebalo asi, suerte  ;D
Título: Re: Comprovar distancia respecto al jugador
Publicado por: spreos22 en Febrero 14, 2010, 06:20:59 PM
Gracias ^^ ya funciona