Buenas querida comunidad!!

Quiero que al poner el mouse encima de un objeto, éste cambie su sprite (así como dice en tooodo el título XD)
No sé cómo podría hacer para que se reconozca esa "colisión"(?) con el mouse, ya que con place_meeting solo se puede hacer con objetos no? y si no es así, ¿Cómo podría hacer para que reconozca que el mouse está sobre el objeto?

Espero me puedan ayudar!  :-X




Hola Luis En

Creo que buscas la función: "position_meeting" (no confundir con la común place_meeting). Esta función detecta una "colisión" como le llamas tu entre una coordenada y un objeto con sprite (o máscara de colisión).
Esto debe ir en el Draw Event del objeto al que quieres dibujarle dos sprites según la posición del mouse
if position_meeting(mouse_x,mouse_y,id) { draw_sprite(el sprite cuando el mouse está encima) }
else { draw_sprite(el sprite normal aqui xD) }


Saludos

Cita de: BssString en Septiembre 07, 2018, 04:42:19 AM
Hola Luis En

Creo que buscas la función: "position_meeting" (no confundir con la común place_meeting). Esta función detecta una "colisión" como le llamas tu entre una coordenada y un objeto con sprite (o máscara de colisión).
Esto debe ir en el Draw Event del objeto al que quieres dibujarle dos sprites según la posición del mouse
if position_meeting(mouse_x,mouse_y,id) { draw_sprite(el sprite cuando el mouse está encima) }
else { draw_sprite(el sprite normal aqui xD) }


Saludos

Genial! gracias por responder, creo que eso es lo que buscaba! ahora lo probaré. Pero tengo una duda: ¿qué se pone en "id"? el nombre del objeto?, de que objeto? ya que el draw lo estoy poniendo en el objeto que quiero que cambie de sprite.

Por ejemplo yo tengo un objeto que cuando el mouse pase por encima cambie de sprite, así que no necesito hacerlo en el event draw no? solo pondría que cambie la imagen index del objeto.


Hola Luis En

No debes colocar nada en "id", así se llama la variable de sólo lectura que te entrega el instance ID del objeto que está corriendo el código.
De esa forma puedes discriminar y detectar la colisión sólo entre las coordenadas del mouse y el objeto que tiene el código.

Si por el contrario llegas a cambiar el "id" por el nombre del objeto, ej: obj_boton, cuando pones el mouse encima de cualquier obj_boton de la room, todos los obj_boton de la room detectarán que el mouse está encima de ellos al mismo tiempo cuando en realidad no es así porque el mouse sólo está encima de uno.

Saludos

Genial!!! BssString!! tienes razón, al poner solo "id" ya se entiende que se debe referir al "id" del mismo objeto donde está el código.
Me funciona perfecto! Gracias Bro! Por cierto, ya estoy terminando el jueguito de prueba, y ya te puse en los agradecimientos!

Por cierto, a ese mismo objeto que al tocar el mouse cambia de sprite, como hacer para que al tocarlo tenga un sonido? porque creo que si lo hago como creo, sonará muchas veces a la vez (el sonido superpuesto). Sabes como hacer para que suene solo una vez al poner el mouse en el objeto?

Hola Luis En

En ese caso, mejor controlarlo con una variable. Para este ejemplo la llamaré "mouse_in"
En el Create Event
mouse_in = false //Indica si el mouse está dentro del objeto o no

En el Step Event
if position_meeting(mouse_x,mouse_y,id) { //Revisa si pones el mouse encima de este objeto
if mouse_in = false { //Esto sólo ocurre si antes de poner el mouse en el objeto, la variable era false
reproduce el sonido aquí //Ocurre el sondio
mouse_in = true //Hace la variable true para que no ocurra de nuevo este bracket (y no se repita el sonido)
}
}
else { mouse_in = false } //Cuando sacas el mouse del objeto, la variable se hace false y el sonido puede sonar otra vez


En el Draw Event
if mouse_in { (dibuja el sprite cuando el mouse está encima) }
else { (dibuja el sprite normal) }


Saludos