Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава XV. Вода.

§ 15.2 Вода с течением

В этой статье мы расскажем как можно сделать воду с течением, которое будет толкать игрока. Для создания воды с течением мы будем использовать следующие энтити-объекты:

Ambient_generic - для озвучивания потока при помощи стандартного файла waterrun.wav;
Func_conveyor - для изображения воды и изменения визуальной (не физической) скорости движения потока воды;
Func_water - для имитации нахождения игрока в воде (этот объект будет невидимым);
Trigger_push - для толкания игрока в сторону движения потока с определенной скоростью.

Создадим в каком-нибудь углублении браш, окрасим его со всех сторон текстурой SCROLLWATER1 (это двигающаяся текстура, на это указывает слово SCROLL в названии) и превратим в объект func_conveyor (см. рис. ниже). Этот объект предназначен для создания конвейера, однако, мы будем использовать его для создания эффекта движения потока.

Создаем func_conveyor, который будет изображать течение воды


В обычном случае, игрок, наступивший на конвейер, перемещается в направлении, указанном углом . Нам же необходимо, чтобы игрок не только наступал на конвейер (поток воды), но и мог находиться внутри него, поэтому выставим флаги и . Итак, у объекта func_conveyor будут следующие свойства:

Render Mode - Texture (этот режим придаст потоку прозрачность);
FX Amount - 210 (степень прозрачности потока. Чем ближе значение к 0, тем поток прозрачнее и чем ближе к 255, тем непрозрачнее);
Conveyor Speed - 50 (скорость движения конвейера (потока). В нашем случае, т.к. через поток можно будет проходить, этот параметр определяет скорость движения текстуры воды SCROLLWATER1).

Флаги:

No Push - не толкает игрока (толкать будет специальный объект trigger_push);
Not Solid - этот флаг делает поток нематериальным. Это необходимо, иначе игрок сможет ходить только по поверхности воды).

Теперь скопируем func_conveyor и вставим на то же самое место. Нажмем [Alt-Enter], чтобы вызвать свойства объекта и в списке выберем func_water.

Примечание: чтобы выбрать в 3-х мерном виде нужный объект при условии, что на одном и том же месте находятся два или больше объектов, необходимо нажать и удерживать левую кнопку мыши на объектах. Объекты, попадающие под курсор, будут выбираться по очереди. Названия объектов показываются в строке подсказок снизу.

Итак, изменив один из объектов func_conveyor в func_water, выставим для него (func_water) следующие свойства:

Render Mode - Texture (этот режим придаст воде прозрачность);
FX Amount - 0 (здесь обязательно поставьте ноль).

Такие параметры сделают воду абсолютно прозрачной, невидимой в игре, ведь нам необходимо создать лишь эффект нахождения игрока в потоке воды, а саму воду изображает func_conveyor.

И последний объект, который непосредственно относится к потоку, это trigger_push. Выберите объект func_conveyor или func_water (без разницы какой именно). Скопируйте его и вставьте где-нибудь около будушего потока. Замените на нем текстуру воды на всех сторонах на специальную текстуру AAATrigger. Нажмите [Alt-Enter] и в списке на этот раз выберите trigger_push. Для этого объекта выставьте только один параметр:

Speed of push - 100 (скорость, с которой поток будет толкать игрока. Необходимо опытным путем, меняя этот параметр и скорость движения текстуры воды в объекте func_conveyor, добиться совпадения скорости толкания и скорости движения текстуры).

Поместите этот объект опять же в то же самое место, где находятся уже два объекта: func_conveyor и func_water (см. рис. ниже). Таким образом, у нас в одном и том же месте будут находится три объекта.

Создаем trigger_push, который будет толкать игрока в воде


Пока что мы не сказали ни слова о направлении движения потока (направлении движения текстуры и направлении толкания игрока). Ведь может получиться так, что вода будет течь перпендикулярно берегам, а игрока будет толкать вдоль, что не очено-то правильно.

Направление толкания игрока задается в параметре объекта trigger_push, а направление движения текстуры необходимо задать углом, под которым нанесена текстура на объект func_conveyor. Этот угол показывается на панели работы с текстурами Face Properties в параметре Rotation. При необходимости измените этот угол на 90°, 180°, 270° или 0°.

Следует заметить, что на нашей карте-примере на виде сверху получаются одни углы, а в игре другие, поэтому направление течения и толкания мы определяли опытным путем.

Теперь придадим потоку немного реалистичности. Разместим над поверхностью воды два звука (объекты ambient_generic, см. рис. ниже):

Создаем два объекта ambient_generic для озвучивания потока воды


Выставим для них следующие свойства:

Path/filename.wav of WAV - ambience/waterrun.wav (звук течения воды, при необходимости Вы можете его поменять);
Volume (10=loudest) - 8 (громкость звука. Минимум: 0, максимум: 10).

Флаги:

Medium Radius - средний радиус распространения звука (при необходимости измените).

Ну, чтож, после довольно долгого создания и подбора углов движения воды и толкания игрока у Вас должен получиться довольно реалистичный поток воды. Главное, чтобы это кому-нибудь было нужно :)

Если Вам лень делать такой поток, чтобы лишь посмотреть, нужен он на Вашей карте или нет, то Вы можете скачать нашу карту-пример.


Ссылки

watersteam.zip [71Кб] — в архиве карта-пример в форматах BSP и RMF, а также необходимые звуки.


Глава XV. Вода.


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0021 ]