Noticias

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

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: ¿Cómo utilizo collision_line?  (Leído 205 veces)

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

Desconectado lucasflexx

  • Visitante
  • *
  • Puntos: 6
  • Mensajes: 1
    • Ver Perfil
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
« última modificación: Noviembre 13, 2018, 01:35:33 am por Johann »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

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

 
Los siguientes usuarios dieron las gracias a este tema: lucasflexx