Из данного материала вы узнаете, как создать воду с движением,
толкающим игрока. От вас потребуется знание слудующих энтити-объектов:
Ambient_generic — для озвучивания потока воды с помощью стандартного файла waterrun.wav;
Func_conveyor — для изображения текущей воды и изменения визуальной (не физической) скорости движения потока;
Func_water — для имитации нахождения игрока в воде (данный энтити-объект будет совершенно прозрачен);
Trigger_push — для толкания игрока в сторону движения потока с определенной скоростью.
Сделаем в какой-либо канаве браш, окрасим его со всех сторон текстурой
SCROLLWATER1 (это скроллящаяся текстура, на это указывает слово
SCROLL в имени текстуры) и превратим нажатием комбинации клавиш
[Ctrl-T] в энтити-объект
func_conveyor
(смотрите картинку ниже). Данный энтити-объект предназначен для
создания конвейера, но, мы воспользуемся им для создания эффекта
движущегося потока.
Обычно, игрок, наступивший на конвейер, перемещается в направлении,
указанном углом «Angle». Нам же нужно, чтобы игрок не только наступал на
конвейер (поток воды), но и мог находиться внутри него, а посему
выставим флажки «No Push» и «Not Solid». Что же, у энтити-объекта
func_conveyor будут следующие свойства:
Render Mode — Texture (данный режим придаст потоку воды прозрачность);
FX Amount — 210 (степень прозрачности потока. Чем ближе
значение к нулю, тем поток прозрачнее и, наоборот, чем ближе к 255, тем
непрозрачнее);
Conveyor Speed — 50 (скорость движения конвейера (потока воды).
Так как у нас через поток можно будет проходить, этот параметр
определяет скорость движения текстуры воды SCROLLWATER1).
Флажки:
No Push — не толкать игрока (толкать будет энтити-объект trigger_push);
Not Solid — данный флажок делает поток нематериальным. Это
нужно, иначе игрок сможет ходить только по поверхности воды, а не по дну
канавы).
Теперь скопируем энтити-объект
func_conveyor и вставим на то же самое место. Теперь у нас два func_conveyor в одном месте. Но мы сейчас это исправим! Нажмем
[Alt-Enter], чтобы вызвать свойства нового объекта и в списке выберем
func_water.
Примечание: чтобы выделить в 3D виде требуемый энтити-объект при
условии, что на 1 и том же месте расположены 2 или больше объектов,
нужно нажать и удерживать левую кнопку мыши на объектах. Объекты под
курсором будут выделяться по очерёдно. Имена энтити-объектов
показываются в строке состояния снизу.
Что же, превратив 1 из энтити-объектов
func_conveyor в
func_water, выставим для него (func_water) следующие параметры:
Render Mode — Texture (данный режим отображения придаст воде прозрачность);
FX Amount — 0 (тут обязательно поставьте 0!).
Такие свойства создадут совершенно прозрачную воду. Ведь нам нужно
создать лишь эффект нахождения игрока в потоке воды, а саму воду
изображает
func_conveyor.
И последний энтити-объект, который необходимо создать — это
trigger_push. Выделите объект
func_conveyor ИЛИ
func_water
(без разницы какой). Скопируйте его и вставьте где-либо около будушего
потока воды. Замените на нем текстуру жидкости на всех сторонах на спец.
текстуру
AAATrigger. Нажмите
[Alt-Enter] и в списке на этот раз выберите
trigger_push. Для данного энтити-объекта укажите только 1-но свойство:
Speed of push — 100 (скорость, с которой поток будет толкать
игрока. Нужно опытным путем, меняя данный параметр и скорость движения
текстуры воды в объекте
func_conveyor, добиться совпадения скорости толкания игрока триггером и скорости движения текстуры, объект func_conveyor).
Поместите данный триггер опять же в то же самое место, где расположены уже 2 объекта:
func_conveyor и
func_water (смотрите картинку ниже). Таким образом, у нас в 1-ом и том же месте будут находится 3 объекта! Вот такая веселуха! :-)
Пока что мы ничего не сказали о направлении движения потока
(направлении движения текстуры от объекта func_conveyor и направлении
толкания игрока объектом trigger_push). Ведь может получиться так, что
вода будет течь перпендикулярно берегам, а игрока будет толкать вдоль,
что, как вы понимаете, недопустимо.
Направление толкания игрока задается в параметре «Angle» объекта
trigger_push, а направление движения текстуры нужно задать градусом, под которым нанесена текстура на объект
func_conveyor. Данный градус показывается на панели работы с текстурами
Face Properties в параметре
Rotation. При надобности измените данный угол на 90 градусов, 180 градусов, 270 градусов или 0 градусов.
Следует отметить, что на нашем уровне-примере на виде сверху
получаются одни градусы, а в игре — другие, поэтому направление течения и
толкания мы определяли опытным путем.
А теперь сделаем поток воды чуть более реалистичным. Разместим над поверхностью воды 2 звука (объекты
ambient_generic, смотрите картинку ниже):
Выставим для них следующие свойства:
Path/filename.wav of WAV — ambience/waterrun.wav (звук течения воды, при надобности вы можете его поменять);
Volume (10=loudest) — 8 (громкость звука. Минимум: 0, максимум: 10).
Флажки:
Medium Radius — средний радиус звучания звука (при надобности измените).