Пример обработки снарядов, только вместо коллизии ентитипик.

Function UpdateIonShot()
For all.plasma_shots=Each plasma_shots
all\life=all\life-1
TranslateEntity all\mesh,all\tx#*dt#,all\ty#*dt#,all\tz#*dt#,1
ob=EntityPick (all\mesh,5); ----------------Zamenit'!!!!!!!
If ob>0 Then
If GetEntityType (ob)=2 Then
If all\typ=1 LP#=GP1_power# Else If all\typ=2 LP#=GP2_power# Else If all\typ=3 LP#=GP3_power# Else If all\typ=4 LP#=GP4_power# Else If all\typ=5 LP#=GP5_power#
u.Unit=Object.Unit(EntityName(ob))
u\health#=u\health#-(LP#*.01*(100-u\shield));If u\plr=0
u\speed#=u\speed#*.6
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
EndIf
EndIf
If (all\life<=0) Or (ob) Then FreeEntity all\mesh Delete all
Next
End Function
ну и спарки при пикании бота
Function CrtPShotSpark(boat,vecy=0,vecp=0,ang=0,spd#=3,min#=2,max#=4)
splasher.PShotSpark=New PShotSpark
splasher\parent=boat
splasher\sprite=CopyEntity(PShotSparkspr)
RotateEntity splasher\sprite,vecp+Rnd(-ang,ang)-180,vecy+Rnd(-ang,ang),0
splasher\scale#=min#;Rnd(min#,max#)
splasher\spd#=spd#;+mass
ScaleEntity splasher\sprite,splasher\scale#,splasher\scale#,splasher\scale#*3
PositionEntity splasher\sprite,EntityX(splasher\parent,True),EntityY(splasher\parent,True),EntityZ(splasher\parent,True)
End Function
может пригодится, спарки выглядят имхо неплохо.