Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Cómo hacer para que un objeto cambie de sprite cuando el mouse está en él.  (Leído 228 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Luis En

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





No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

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
Código: [Seleccionar]
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

 
Los siguientes usuarios dieron las gracias a este tema: Luis En


Desconectado Luis En

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
Código: [Seleccionar]
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.



Desconectado BssString

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

 
Los siguientes usuarios dieron las gracias a este tema: Luis En


Desconectado Luis En

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?


Desconectado BssString

Hola Luis En

En ese caso, mejor controlarlo con una variable. Para este ejemplo la llamaré "mouse_in"
En el Create Event
Código: [Seleccionar]
mouse_in = false //Indica si el mouse está dentro del objeto o no
En el Step Event
Código: [Seleccionar]
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
Código: [Seleccionar]
if mouse_in { (dibuja el sprite cuando el mouse está encima) }
else { (dibuja el sprite normal) }

Saludos

 


Desconectado Luis En

Genial bro! quedó perfecto! gracias por la ayuda!!  8)