Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Marcusmaniacus en Abril 26, 2021, 07:42:28 pm

Título: Checkeo en cada paso del con el speed
Publicado por: Marcusmaniacus en Abril 26, 2021, 07:42:28 pm
Tengo el problema con el speed  mi personaje se mueve a 400  de speed pero el problema es que  me gustaria que comprobara si ahi una pared entre el y el personaje....
ahora el problema es el siguiente, que como es un speed  avanza de 400 pixeles en 400   pero quiero ver como comprobar si adelante de  el axiste una pared para que se pare por decir en el pixel 250  (si teoricamente estubiera una pared a esa distancia)
if (Movimiento==true)
{
    Objetivo=instance_nearest(x,y,Obj_Persona)
    direction=point_direction(x,y,Objetivo.x,Objetivo.y)
    if(distance_to_object(Objetivo)<400)
    {
        speed=distance_to_object(Objetivo)
    }
    else
    {
        speed=400
    }
}
else
{
    speed=0
}
Título: Re: Checkeo en cada paso del con el speed
Publicado por: Clamud en Abril 27, 2021, 05:17:14 pm
Te puedes mover pixel por pixel hasta que el objeto detecte colisión. Pero serían muchas iteraciones.
Para hacerlo más eficiente puedes revisar la colisión con una línea trazada entre el punto de partida y el punto meta.
Puedes estimar el punto de colisión de esta forma
https://yal.cc/gamemaker-collision-line-point/

También puedes hacer el movimiento en varios pasos. Comienza con pasos grandes y ve reduciendo la distancia hasta encontrar el punto de colisión. Similar a la técnica de búsqueda binaria.
https://es.wikipedia.org/wiki/Búsqueda_binaria