Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

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: Checkeo en cada paso del con el speed  (Leído 243 veces)

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

Desconectado 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
}

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 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