Меню сайта


[DS]: Half-Life Server
[DS]: Half-Life Server


[DS]: CS:S GunGame v34 Server
[DS]: CS:S GunGame v34 Server


[DS]: CS:S v34 Server
[DS]: CS:S v34 Server


Поиск

add_newДобавить новость
Последние добавленные
Название игры: S.I.P: Out Life
Жанр: FPS, с элементами RPG
Язык: с++, скрипты lua
G API: DirectX 9
Сайт: sip-game.su
Группа Vk: vk....
Читать далее

<JAM>
m1-palinka


HL-HEV
hl-hev

DS-Servers
Статьи
Туториалы
Маппинг
Goldsrc
Создание карт
Вода

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



Вода с течением
Добавил: root
2013-01-07 14:22:13
28 просмотров

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

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

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

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



В обычном случае, игрок, наступивший на конвейер, перемещается в направлении, указанном углом «Angle». Нам же необходимо, чтобы игрок не только наступал на конвейер (поток воды), но и мог находиться внутри него, поэтому выставим флаги «No Push» и «Not Solid». Итак, у объекта 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, который будет толкать игрока в воде



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

Направление толкания игрока задается в параметре «Angle» объекта 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, а также необходимые звуки.

§ 15.1 Обычная вода
§ 15.2 Вода с течением
§ 15.3 Водопад
§ 15.4 Сливающаяся вода (бассейн)

Поделиться:
Тэги:

DS-Servers.com
Copyright © 2012-2016. All Rights Reserved.
При копировании материала ссылка на источник обязательна
За материалы, размещенные пользователями, администрация сайта ответственности НЕ несет