Al planificar movimientos o decidir ciertas acciones es importante comprobar si ocurren colisiones con otras instancias en otras posiciones. Las funciones siguientes se utilizan para esto. Todas ellas tienen 3 argumentos en común: el argumento obj puede ser un objeto, la palabra clave all, o la id de una instancia. El argumento prec indica si se debe usar colisión precisa o la caja de contorno de la instancia (la colisión precisa sólo funciona si el sprite de la instancia tiene activada la misma opción). El argumento notme indica si no se debe tener en cuenta a la instancia que llama a la función. Todas estas funciones devuelven la id de una de las instancias con las que se detecta colisión. Si no hay colisión devuelven un valor negativo.
collision_point(x,y,obj,prec,notme)
Comprueba si hay una colisión en el punto (x,y) con instancias del objeto obj.
collision_rectangle(x1,y1,x2,y2,obj,prec,notme)
Comprueba si hay una colisión entre el rectángulo (sólido) con las esquinas
indicadas e instancias del objeto
obj.
Por ejemplo, puedes usar esta función para ver si un área está libre de
obstáculos.
collision_circle(xc,yc,radius,obj,prec,notme)
Comprueba si hay una colisión entre la circunferencia (sólido) con centro (xc,yc)
y radio r e instancias del objeto
obj. Puedes
usar esta función para ver si un objeto está cerca de una posición.
collision_ellipse(x1,y1,x2,y2,obj,prec,notme)
Comprueba si hay una colisión entre la elipse (sólida) con las esquinas
indicadas e instancias del objeto
obj.
collision_line(x1,y1,x2,y2,obj,prec,notme)
Comprueba si hay una colisión entre la línea que va de (x1,y1) a (x2,y2) e
instancias del objeto
obj. Esta
función es muy poderosa. Puedes usarla para comprobar si una instancia puede ver
a otra chequeando si entre ellas hay una pared.