Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: carras en Marzo 13, 2016, 02:19:13 PM

Título: Colision desde evento Colision o desde evento step?
Publicado por: carras en Marzo 13, 2016, 02:19:13 PM
Hola chicos necesito detectar la colision de mi objeto flecha(esta va a una velocidad maxima de 50).Que me recomendais para no tener problemas? Un evento colision? o un place_meeting en el evento step?
Título: Re:Colision desde evento Colision o desde evento step?
Publicado por: eams1986 en Marzo 13, 2016, 02:24:56 PM
En ves de poner a mucha velocidad es mejor que le.cambien la velocidad a room speed.
Ya que te puede traer problemas.
Los.puedes hacer con un place meeting
En el.evento step
Saludos
Título: Re:Colision desde evento Colision o desde evento step?
Publicado por: Clamud en Marzo 13, 2016, 05:03:12 PM
Una solución es que el movimiento de la flecha se divida en secciones; si se sobrepasa cierta velocidad, en lugar de sumar la velocidad directamente a la posición, se van sumando pequeños desplazamientos hasta alcanzar la posición final. Ejemplo:
[gml]
//Evento Step
//(vx, vy) son las componentes de la velocidad
v = sqrt( vx*vx + vy*vy ); //rapidez
if( v > 8 ) //si sobrepasa el limite seguro
{
    divisor = ceil( v/8 ); //divisor de la velocidad
    repeat( divisor ) //ciclo
    {
        x += vx/divisor; //el desplazamiento se hace poco a poco
        y += vy/divisor;
        if place_meeting( x,y, obBloque ) //si hay colision
        {
            vx = 0; //la velocidad se hace cero
            vy = 0;
            v = 0;
            break; //termina el ciclo
        }
    }
}
[/gml]

Otro método sería realizar un proyección de forma que detecte la posición de la colisión de forma geométrica, como se muestra en este artículo: http://www.gamedev.net/page/resources/_/technical/game-programming/swept-aabb-collision-detection-and-response-r3084 (http://www.gamedev.net/page/resources/_/technical/game-programming/swept-aabb-collision-detection-and-response-r3084)

Un método parecido al anterior, pero que resulta más sencillo, utiliza la función collision_line. Ejemplo: http://www.escueladevideojuegos.net/colisiones-ultra-perfectas-gamemaker/ (http://www.escueladevideojuegos.net/colisiones-ultra-perfectas-gamemaker/)
Título: Re:Colision desde evento Colision o desde evento step?
Publicado por: 3dgeminis en Marzo 13, 2016, 06:17:48 PM
Yo tengo este metodo para hacer colisiones rapidas y me ha funcionado bien:

CREATE
vel=50  ///velocidad
dir=point_direction(x,y,mouse_x,mouse_y)  ///direccion
image_angle=dir
xx=lengthdir_x(1,dir)
yy=lengthdir_y(1,dir)


STEP
repeat(abs(vel))
{
if not place_meeting(x,y,muro)
   {
    x+=xx
    y+=yy
   }
else {instance_destroy()}  ///borrar esta parte si no se quiere destruir la flecha
}