Есть в редакторе Doom3 интересная папка под названием ai. В ней находятся функции с помощью, которых можно настроить поведение монстров, а именно как они будут себя вести во время боевого контакта с игроком.
ai_attackcone_turret
Функция ai_attackcone_turret относится к классу path, но предназначена исключительно для монстров. Используется для того чтобы направить монстра в нужную позицию и защищать ее до последнего значения в ключе health, а не тупо устраивать пробежку вдоль посланного града пуль. У функции есть специальная область атаки (синий контур) это как бы аналог триггера, но только без текстуры, попадая в которую игрок активирует эту функцию.
Размер области атаки можно настроить с помощью дополнительных ключей:
key:fov // угол области
val:90
key:min // минимальная дистанция области от функции
val:200
key:max // максимальная дистанция области от функции
val:512
key: offset // отодвигаем область от функции.
val:0 0 0 // сдвиг будет происходить по осям X Y Z например ‘40 –120 0’
X // при плюсовом значении вперед, при минусовом назад
Y // при плюсовом значении влево, при минусовом вправо
Z // при плюсовом значении вверх, при минусовом вниз
key:height // высота области атаки.
val:256 // значение делится пополам половина суммы идет на верх от центра области, а остальная вниз то есть в этом случае по 128 на одну сторону
Ключи, относящиеся к поведению монстра:
key:num_shots // сколько выстрелов произведет монстр, после того как игрок покинул облать. Выстрелы будут производиться в то место, где монстр последний раз видел игрока.
val:3
key: max_wait // через какое время монстр начнет атаку при следующем контакте с игроком – это относится только когда игрок уходит на время из поля зрения монстра.
Первая атака монстра происходит сразу же, как только он достигнет выбранной позиции.
val:2
1. ai_attackcone_turret (монстр займет позицию, где установлена эта функция)
2. область атаки
ai_attackcone
Аналог функции ai_attackcone_turret, но отличается новыми ключами и немного другое
поведение у монстров.
key:anim // этот ключ нужен для того чтобы наш монстр атаковал нас с выбранной анимацией. Например, в положение, сидя с уклоном в влево все зависит от наличия анимации у монстра. К примеру я взял монстра monster_zsec_machinegun так как у него больше атакующей анимации, чем у других его собратьев.
Вот у него, например полный набор анимации для атаки в положение сидя с уклоном влево:
stepoutleft_fire
stepoutleft_in
stepoutleft_out
stepoutleft_wait
Но в ключ можно вписать только одно значение и для этого нужно будет использовать только часть от названия анимации предназначенной для атаки.
val:stepoutleft // сюда пишем первую часть от название анимации и используем в дальнейшей все 4 анимации. Все анимации для атаки содержат в название такие слова как fire, out, in, wait
На мой взгляд, у этой функции есть одна неприятная вещь, как только мы покидаем область для атаки, монстр в свою очередь начинает нас преследовать. Чтобы это не произошло нужно установить браш с текстурой textures/common/monster_clip там, куда не должен идти монстр. После этого наш монстр держит позицию (где установлен куб с функцией, например за ящиком) и исполняет все атакующие анимации пока мы в свою очередь находимся в области атаки.
ai_lostcombat
Функция предназначена для потери боевого контакта между монстром и игроком. Например, мы столкнулись с монстром, где нибудь в коридоре. Монстр, увидев нас, начнет преследование с последующей атакой, даже если игрок скрылся из виду. Для того чтобы монстр вернулся на выбранную позицию, когда потеряет нас из виду мы установим на карте функцию ai_lostcombat. И это будет позиция, куда будет возвращаться монстр, после того как потеряет нас из виду. Остается только монстра подконнетить (Ctrl+K) к ai_lostcombat и установить браш с текстурой monster_clip, для того чтобы монстр наталкивался на препятствие, а функция возвращала бы его на место. К этой функции также можно подконнетить пару монстров или на оборот одного монстра с несколькими функциями расставленных в разных местах и монстр будет возвращаться к функции которая ближе всего.
1. Выходим из-за угла и встречаем монстра. Уходим, после того как нас заметили.
2. После того как монстр увидел игрока, он пытается достичь нас, чтобы атаковать.
3. Но наталкивается на браш с текстурой monster_clip.
4. И занимает позицию, где установлена функция ai_lostcombat.
Теперь ваши монстры будут довольны, так как теперь у них есть возможность доставить проблем игроку во время атаки.
З.Ы. Без стыда и совести скатано с wwwdoom3.ru