Поделал я твою игрушку на досуге. Поправил то что тебе нужно.
Сделано:
- пушки стреляют все, и только если игрок приблизится на определённое расстояние
- пушки убивают игрока
- игрок убивает пушки (после смерти они полупрозрачными становятся)
Теперь по коду. Конструкции типа
UpdateEnemy(ex_en.T_enemy)
....
Function UpdateEnemy(ex_en.T_enemy)
For ex_en.T_enemy = Each T_enemy
PointEntity ex_en\ent,player
TurnEntity ex_en\ent,0,181.5,0
Next
End Function
я заменил на
UpdateEnemies()
....
Function UpdateEnemies()
Local ex_en.T_enemy
For ex_en.T_enemy = Each T_enemy
PointEntity ex_en\ent,player
TurnEntity ex_en\ent,0,181.5,0
Next
End Function
не вижу смысла в такие функции извне что-то передавать (во всяком случае на данном этапе).
Про коллизии. У тебя в игрока враг не попадал из-за неправильно назначенной коллизии, ты написал:
Collisions TYPE_PLAYER, TYPE_EN_BULLET, 2, 3
обрати внимание на порядок типов коллизии. Нужно поменять их местами:
Collisions TYPE_EN_BULLET, TYPE_PLAYER, 1, 1
т.к. первым должен идти тип того объекта, который сталкивается, а вторым того, с которым. (или нет? доку я перечитывать не стал, откуда-то помню такое просто)
Если бы ты игроком нарвался на пулю, идя на врага, то сработало бы и это.
Плюс к тому метод коллизии можно поставить 1: ellipsoid-to-ellipsoid collisions, и решение для коллизий тоже в 1: stop , т.к. пуля и игрок в виде эллипсоида колизятся, и двигать после столкновения ничего не нужно - снаряд просто удаляется сразу.
Подбирание оружие и аптечек я думаю лучше сделать через EntityDistance, думаю что быстрее работать будет (инфа не 100%).
Плюс проходить сквозь них игрок сможет, не подбирая, а то щас при здоровье в 100 сквозь аптечку не пролезешь, сдвигается игрок по коллизии.
Пушки я расставил в цикле, т.к. они в ряд просто пока что.
Там где исправлял что-то, поставил комментарий ";+++", но не везде т.к. мест стало много и мне надоело отвлекаться на проставление этих комментов.