Сделали за меня в свое время проверку и я, думая что разберусь, пустил это дело на самотек. Теперь пытаюсь исключить объек из коллизии, но, увы, попадалово. Я не знаю как.
Вот функция:
Function fnWhatVperedi(obj,obj_ygol=0)
;îïðåäåëåíèå ÷åðåç îáû÷íûå êîîðäèíàòû ïðîòèâíèêà åãî êîîðäèíàò â ìàññèâå masPrep
Local obj_x = Int((EntityX (obj)/10))
Local obj_z = Int ((EntityZ (obj)/10))
;ñìåùåíèÿ ïî x è z äëÿ ìàññèâà masPrep â çàâèñèìîñòè îò óãëà,
;êîòîðûé ïîêàçûâàåò êóäà "ñìîòðèò" îáúåêò
If obj_ygol=0
dx=0
dz=-1
EndIf
If obj_ygol=90
dx=-1
dz=0
EndIf
If obj_ygol=-90
dx=1
dz=0
EndIf
If Abs(obj_ygol)=180
dx=0
dz=1
EndIf
;ïðîâåðêè íóæíû äëÿ òîãî, ÷òîáû èíäåêñ ìàññèâà íå âûøåë çà ãðàíèöû
If ((obj_x+dx>=0) And (obj_x+dx<31) And (obj_z-dz>=0) And (obj_z-dz<31))
;â ïåðåìåííóþ vperedi çàíîñèì çíà÷åíèå èç masPrep òîé êëåòêè
;êîòîðàÿ íàõîäèòñÿ âïåðåäè ïðîòèâíèêà
Return PlayField(obj_x+dx,obj_z-dz)
EndIf
End Function
Что бы проверить, если в впереди объект стоило писать:
en1\retval = fnWhatVperedi(en1\obj,Int(EntityYaw (en1\obj)))
только ранее, вместо
Int(EntityYaw (en1\obj)))
можно было писать циферки, соответсвующие массиву
1 - стенка
2 - кубик
3 - игрок
4 - бомба
5 - ИИ
Я проверял, если retval>0 то "занято" ...
Теперь мне нужно исклюсить 5. То есть что бы ии не коллиделись с ИИ но в коде уже разобраться не могу! Помогите пожалуйста, кто сможет понять этот принцип
p.s.
это не работает:
en1\retval = fnWhatVperedi(en1\obj,Int(EntityYaw (en1\obj)) And en1\retval<>5)