Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: lucasflexx en Noviembre 11, 2018, 01:33:52 AM

Título: ¿Cómo utilizo collision_line?
Publicado por: lucasflexx en Noviembre 11, 2018, 01:33:52 AM
Disculpen mi ignorancia, hace poco comencé a utilizar GML y hay muchas funciones que no entiendo como funcionan. Quiero hacer un plataformero con un sistema de colisiones que utilice la función collsion_line. desde ya, muchas gracias
Título: Re:¿Cómo utilizo collision_line?
Publicado por: BssString en Noviembre 11, 2018, 02:02:11 AM
Hola lucasflexx

La función "collision_line" permite trazar una línea recta entre dos puntos y ver si algún objeto toca la línea que hemos trazado.
Es útil para cuando quieres usar un láser por ejemplo, así detectas la colisión desde el principio hasta el final del láser sin tener que hacer cosas raras con las mascaras de colisión.

Su uso es:
collision_line( x1, y1, x2, y2, obj, prec, notme );

x1: Coordenada X del punto 1
y1: Coordenada Y del punto 1
x2: Coordenada X del punto 2
y2: Coordenada Y del punto 2
obj: El object_index o instance_id del objeto que quieres ver si toca la línea.
prec: true utiliza el método "pixel perfect collision", pero el sprite tiene que tener activa la casilla "precise collision checking" para que funcione, lo normal es usar "false" para que se tome en consideración la boundary box de la máscara de colisión.
notme: Sólo es relevante si el objeto que corre el código coincide con el indicado en el parámetro "obj", entonces al usar "true", se excluye el objeto que corre el código, al usar "false" se considera para la colisión.

La función, en respuesta, en vez de traer "true" o "false", te devuelve el instance_id del objeto con el que colisiona.
Si ningún objeto colisiona con la línea, la función devuelve "noone".
Si 2 o más objetos colisionan con la línea, la función trae sólo 1 instance_id.