Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: SobacoEnLlamas en Julio 12, 2012, 03:18:43 PM

Título: Sprite segun dirección del raton
Publicado por: SobacoEnLlamas en Julio 12, 2012, 03:18:43 PM
[GM8.1PRO]

Hola, miren necesito hacer que mi personaje mire todo el rato al cursor, ya sé hacer eso típico de que el sprite gire, pero ahora no es lo que quiero exactamente, tengo sprites varios para que según donde pongas el cursor, según en qué dirección del player pues se ponga el sprite deseado. Uso solamente 4 sprites en vez de 8 (me como las diagonales) así que diria que lo que intento saber hacer que por lógica, no sé ni encuentro como, sino no preguntaría xd es que si el mouse está en el rango de dirección al objeto player 315 a 45 (ya que está el 0 de por medio.. a no ser que se pusiese desde el -45 al 45 pero no sé tampoco si se puede) pues tenga el sprite que mira a la derecha, del 45 al 135 el sprite de abajo, 135 a 225 el de arriba y 225 a 315 el de abajo... se entiende?? xDDD

PD: los prites los tengo separados por dirección, ya que tienen su animación.

código me vale, incluso lo prefiero :)
Muchas gracias al que me ayude o lo intente ;)
Título: Re:Sprite segun dirección del raton
Publicado por: elviskelley en Julio 12, 2012, 03:31:16 PM
Mira descargate este juego, le deje el editable.
En los scripts ves como se hace.
http://www.comunidadgm.org/index.php?topic=15990.0
Te explico un poco el script en palabras comunes.
si X esta ala izquierda del mouse osea es < al mouse_x quiere decir que estaria mirando hacia la derecha, entonces el sprite a cambiar seria el de mirar hacia la derecha.
Bueno Descargalo Revisa el editable y veras de que hablo.
Título: Re:Sprite segun dirección del raton
Publicado por: SobacoEnLlamas en Julio 12, 2012, 03:43:44 PM
bueno, supongo que tengo que ver al cpu que mira siempre el balón no?... tendría que cambiar el objeto del balón en mi caso por mouse_x o _y si no me equivoco... pero al usar sprites que no son en diagonal no sé si me vale igual poner x and y... de todos modos voy a intentar pensar y sacarlo yo... pero si me dices un ejemplo con un solo sprite de la dirección que elijas pues ya mismo supongo que sabría sacar las otras direcciones, no sé como más que nada porque podría estar el mouse a más "x" y más "y" osea en la diagonal abajo derecha, pero si pongo el mouse tirándo más para la izquiera y más abajo el sprite tendría que ser el de abajo y si lo pongo más a la derecha y más arriba pues sería el sprite derecha.. y los dos siguen estando a más "x" y a más "y"... espero explicarme, porque no sé como sacar eso :S

PD: te he agregado en yoyogames jeje :P
y gracias ;)
Título: Re:Sprite segun dirección del raton
Publicado por: SobacoEnLlamas en Julio 12, 2012, 05:56:20 PM
resolví el mirar, hice un paripé a mi estilo xD

lo que hice fue crear un objeto (con un sprite para guiarme, lo pondré invisible) que rota mirando al mouse (típico en shooters)

entonces en el player (obj_mage) le puse esto en step:
if ( (obj_dir.image_angle >= 45) and (obj_dir.image_angle < 135) )
{
    sprite_index = spr_mageUp;
}
if ( (obj_dir.image_angle >= 135) and (obj_dir.image_angle < 225) )
{
    sprite_index = spr_mageLeft;
}
if ( (obj_dir.image_angle >= 225) and (obj_dir.image_angle < 315) )
{
    sprite_index = spr_mageDown;
}
if ( (obj_dir.image_angle >= -45) and (obj_dir.image_angle < 45) )
{
    sprite_index = spr_mageRight;
}

pero algo falla en el sprite para la derecha (spr_mageRight) estando el player mirando a la derecha, bajo poco a poco el mouse, y cuando el obj_dir llega al angulo menor a 315 se cambia el sprite abajo perfectamente... pero luego vuelvo a subir el mouse poco a poco y aunque lo ponga mayor a 315 (lo mismo que menor a -45, si es que se puede poner negativos) pues el sprite no cambia, cambia cuando llego al angulo 0...
Título: Re:Sprite segun dirección del raton
Publicado por: elviskelley en Julio 12, 2012, 09:16:51 PM
Cambia el -45 por 305 y listo.
Título: Re:Sprite segun dirección del raton
Publicado por: SobacoEnLlamas en Julio 12, 2012, 10:18:48 PM
eso ya lo probé (con 315, no 305 que esa no es la mitad exacta xd).. pero así nisiquiera se cambia, nunca pk hay confrontacion, no le ve sentido por lo que parece que sea mayor que 315 (o 305) y a la vez menor que 45... no tiene sentido parece, no cuenta la vuelta hasta 360...

pero lo acabo de arreglar... al final he partido ese trozo en dos:

if ( (obj_dir.image_angle >= 315) and (obj_dir.image_angle < 360) )
{
    sprite_index = spr_mageRight;
}
if ( (obj_dir.image_angle >= 0) and (obj_dir.image_angle < 45) )
{
    sprite_index = spr_mageRight;
}



graciasss, solucionado... ahora abro otro tema con otra duda xD