![]() |
![]() |
AlienEmperor |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация: ![]() ![]() ![]() |
См. сабж: вот есть уровень, на нем (к примеру) 40 монстров, тех, которых видно - 3, остальные "в отключке" пока не попадут в зону видимости... С одним из них игрок взаимодействует...
Есть ли что-нибудь лучше чем: ... For I:=0 To Monster_Count-1 Do If Monsters[I]^.Active Then Begin If GetMonster[Player.X,Player.Y]<>Nil Then Monsters[I]^.DoCollide; End; Как вариант, по идее можно сделать массив указателей на текущих активных монстров (штук 5-6), но при передвижении экрана его без конца нужно обновлять... Не очень-то красиво ?... Сообщение отредактировано: AlienEmperor - 16.02.2005 11:15 -------------------- Все в жизни ботва... Кроме пчел!
|
![]() ![]() |
AlienEmperor |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация: ![]() ![]() ![]() |
Предположительно уровень состоит из матрицы (10 х 5) экранов (скорее всего все 10 х 5 использоваться не будут). Далее --> на одном экране вряд ли будет больше 3 монстров (скорее не больше двух); каждый из них "живет" своей "жизнью", может атаковать, может убегать и т.д., Т.к. экран динамический (т.е. "сроллится"), то возникают проблемы:
а) с дальностью "активации" монстров б) если дело дошло до атаки, то надо выяснить, кто именно "укусил" игрока. Далее см. выше... P.S. Можно еще вообще сделать всех монстров "живущими" все время - тогда проблема только усугубится и появится вероятность скопления всех врагов в одном месте... ![]() -------------------- Все в жизни ботва... Кроме пчел!
|
![]() ![]() |
![]() |
Текстовая версия | 7.08.2025 3:11 |