Este codigo lo escribio CLAMUD esta funcionando bien pero con sprite cuadrados me gustaria acomodarlos con sprites redondos. Alguien me pudiera decir como hacer en ese caso ya que no logro dar con la solucion ya que cuando doy click fuera del circulo como es redondo no queda bien .
coordenadas son:
x1 = x;
y1 = y;
x2 = x+sprite_width;
y2 = y+sprite_height;
Define las coordenadas en el evento Create. Luego, en cada step, checas si se ha pulsado con alguno de los cinco ratones (numerados de 0 a 4), entonces reproduces un sonido:
for( i=0; i<=4; i++ )
{
if( device_mouse_check_button_pressed( i, mb_left ) )
if( device_mouse_x(i) > x1 and devide_mouse_x(i) < x2 )
if( device_mouse_y(i) > y1 and device_mouse_y(i) < y2 )
audio_play_sound( nota, 0, false );
}
Gracias de antemano.
Edito:la mascara del sprite esta en elipse por si hace falta pero sigue igual.
Si es un objeto redondo entonces deberías calcular la distancia entre el centro del sprite y el radio de la circunferencia del sprite.
Por ejemplo, verificas las distancia DIST entre el centro del sprite y el cursor.
[GML]
if (point_distance(x,y,mouse_x, mouse_y) <= DIST){
// acciones }
[/GML]
si le pongo eso no me respondes los dos o tres botones a la ves .
no se que estoy haciendo mal
solo se escucha un sonido si presiono los 3 de una ves .
:'( :'( :'(
Muestra el código.
//CREATE
//x1 = x;
//y1 = y;
//x2 = x//+sprite_width;
//y2 = y//+sprite_height;
device_mouse_dbclick_enable( false );
image_speed=0
//STEP
for( i=0; i<=4; i++ )
if( device_mouse_check_button_pressed( i, mb_left ) )
if (point_distance(x,y,mouse_x, mouse_y) <= 192)
{
audio_play_sound( snd_floor, 0, false );
}
No debes usar mouse_x ni mouse_y porque devuelven la posición sólo del primer "device". Y tampoco tiene sentido usar las variables x1 y y1 si el sprite tiene el origen centrado. El código podría quedar así:
[gml]
///CREATE
device_mouse_dbclick_enable( false );
r = 192; //radio del botón
//o así: r = sprite_width/2;
[/gml]
[gml]
//STEP
for( i=0; i<=4; i++ )
{
if( device_mouse_check_button_pressed( i, mb_left ) )
if( point_distance( x,y, device_mouse_x(i), device_mouse_y(i) ) <= r )
audio_play_sound( snd_floor, 0, false );
}
[/gml]