Всем привет. В общем, понадобилось мне сделать быстрые пули. Для этого прописал им своё движение в Step:
Код
repeat(spd)
{
x+=lengthdir_x(1,direction);
y+=lengthdir_y(1,direction);
ID=collision_point(x,y,o_enemy,1,1);
if ID
{
event_perform(ev_collision,ID);
exit;
}
}
И всё работает нормально, если враг стоит на месте или движется навстречу пуле. Если же пуля догоняет движущегося врага сзади, то она "приклеивается" к его спине и движется с его скоростью. Т.е. exit срабатывает, а event_perform(ev_collision,ID) нет. Что можно сделать в такой ситуации?
Из вариантов рассматривал:
1. Добавить перед вызовом столкновения x=ID.x; y=ID.y; - работает, но при этом частицы уничтоженной пули создаются не в точке столкновения;
2. Убрать exit - работает, но не будет ли при этом много лишних вызовов событий, не пострадает ли оптимизация?