Проверка cтолкновения
При планировании движений или проверке определённых действий, часто важно знать, имеются ли столкновения с другими объектами в определённых местах. Следующие программы могут использоваться именно для этого. Все они, в общем, имеют три аргумента: аргумент obj - может быть объектом, ключевое слово all, или идентификатор образца объекта. Аргумент prec - указывает, должна ли проверка быть точной или только базироваться на bounding box образца объекта. Точная проверка осуществляется, когда спрайт для образца объекта имеет точную проверку столкновения установленную в опциях. Аргумент notme - указывает, что вызванный образец объекта не должен проверятся. Все эти функции возвращают идентификатор одного из образцов объекта, который сталкивается, или они возвращают отрицательное значение, когда нет столкновения.
collision_point(x,y,obj,prec,notme)
Проверяет, есть ли в точке (x,y) столкновение с объектами obj.
collision_rectangle(x1,y1,x2,y2,obj,prec,notme)
Проверяет, есть ли столкновение между прямоугольником с указанными противоположными углами и объектами obj. Например, Вы можете использовать это для проверки свободной от препятствий области.
collision_circle(xc,yc,radius,obj,prec,notme)
Проверяет, есть ли столкновение между кругом центрированным в позиции (xc,yc) с заданным радиусом и объектами obj. Например, Вы можете использовать это для проверки - имеется ли ближайший объект возле конкретной позиции.
collision_ellipse(x1,y1,x2,y2,obj,prec,notme)
Проверяет, есть ли столкновение между эллипсом с указанными противоположными углами и объектами obj.
collision_line(x1,y1,x2,y2,obj,prec,notme)
Проверяет, есть ли столкновение между линией сегмента из (x1,y1), в (x2,y2) и объектами obj. Это мощная функция. Вы можете использовать её для проверки - может ли образец объекта видеть другой образец объекта, заодно проверяя, пролегает ли линия сегмента между их стеной.