С помощью Lua можно.
К примеру если необходимо подорвать снаряд когда по вектору его движения есть преграда (в данном примере цель может быть любым движущимся объектом но никто не мешает настроить его только на крабов) то скрипт ракеты должен выглядеть примерно следующим образом:
Code
function ScanVectorForMO(StartPosition, VectorToDestination, MOIDToIgnore)
local ResultMOID = 255;
local ResultPosition = StartPosition + VectorToDestination;
local CheckMO = SceneMan:CastMORay(StartPosition, VectorToDestination, MOIDToIgnore, -1, false, 1);
if CheckMO ~= 255 then
local MO = MovableMan:GetMOFromID(CheckMO);
if MO.GetsHitByMOs then
ResultMOID = CheckMO;
ResultPosition = StartPosition + (VectorToDestination/ VectorToDestination.Magnitude * SceneMan:ShortestDistance(StartPosition,MO.Pos,true).Magnitude);
end
end
return ResultPosition, ResultMOID;
end
function Update(self)
ResultPosition, ResultMOID = ScanVectorForMO(self.Pos, self.Vel:SetMagnitude(Дистанция_подрыва), self.ID);
if ResultMOID ~= 255 then
self:GibThis();
end
end
Игры под рукой нет, так что проверить скрипт прямо сейчас не могу, но если возникнут проблемы то позже попробую помочь.