Четверг, 28.03.2024, 15:20
Under sky of Half-Life
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Категории каталога
На движке Valve Source [29]
На движке Half-Life 1 [1]

Главная » Статьи » Статьи по мэппингу » На движке Valve Source

Smooth system. Stridemann ©

Данная система дает возможность:

  •         плавное изменение какой-то переменной (консоли\энтити)
  •          плавный старт\остановка движения тректрейна (поезда) (к примеру)
  •          изменение переменной по экспоненциальной или логарифмической функции
  •          изменение переменной в указанном диапазоне
           ... множество мест применения.

 

В этом учебнике я покажу способ применения на плавном замедлении времени в игре. Это сложнее немного чем плавный старт поезда, по этому первый пример будет именно на тректрейне.

 

Традиционно начнем с пустой комнаты с info_player_start'ом и сеткой на 4. Ставим path_track с именем smooth_track_1, зажимаем shift и делаем второй трек на расстоянии ~100 (к примеру) дюймов:



Мы поимели два трека на расстоянии 100 дюймов (юнитов) с именами smooth_track_1 и smooth_track_2. Создаем func_tracktrain с именем smooth_tracktrain_1 толщиной 1 дюйм (центр трейна не попадает в центр паза. не сдвигаем его!) в первом треке. (не обязательно точно в нем создавать, т. к. при старте карты он будет автоматически телепортирован в первый (указанный в нем) трек. Просто когда к нему будете что-то припаренчивать то ставьте ровно).

 

 

Указываем скорость MaxSpeed 40 (дюймов в сек) (смотря с какой скоростью вы хотите иметь изменение переменной). При таком раскладе скорость изменения нашей переменной от макс. до мин. займет 2.5 сек.

Указываем First stop target: smooth_track_1, флаги:


 

Теперь создаем trigger_multiple на пути тректрейна, чтобы трейн задевал их при движении. Кол-во триггеров зависит от плавности изменения переменной. К примеру моя переменная host_timescale, мне

 

нужно изменить ее от 0.2 до 1.0, я возьму 9 триггеров на каждое положение:


 

Флаги триггеров:Everything.

 

 

Теперь я ставлю point_clientcommand (имя smooth_servercommand), а в других случаях (переменная энтити) ссылаемся прям на энтитю (к примеру другой тректрейн (поезд\телега)).

 

Аутпуты:

У первого триггера:

OnStartTouch -> smooth_servercommand -> Command : host_timescale 1.0

OnStartTouch -> smooth_servercommand -> Command : sv_cheats 1                -придетсявключитьчитыдляэтойкоманды.

Второго:

OnStartTouch -> smooth_servercommand -> Command : host_timescale 0.9

 

... ит. д.  ...

 

Последнего:

OnStartTouch -> smooth_servercommand -> Command : host_timescale 0.2

 

В принципе все. Системой удобно управлять с помощью logic_branch. Ставим сие чудо с именем smooth_branch.

Аутпуты:

OnFalse -> smooth_tracktrain_1 -> StartBackward

 

OnTrue -> smooth_tracktrain_1 -> StartForward

 

Когда нужно будет запустить систему- подаем аутпут:

smooth_branch -> SetValueTest : 1              //включить эффект

smooth_branch -> SetValueTest : 0              //выключитьэффект

 

Один момент в моем случае.. Мы управляем временем, соответственно ползунок наш будет двигаться в соответствии со временем (и сила эффекта будет работать по экспоненциальной\логарифмич. функции, и время срабатывания эффекта увеличится, по этому мы должны с каждого триггера подать аутпут на тректрейн (ползунок) на изменение скорости передвижения. Теперь эффект будет изменятся линейно.

Примечания:

·         с помощью таких изменений в движении ползунка можно сделать изменение переменной по экспоненциальной или логарифмической функции т. е. нелинейно.

·         На пути ползунка можно сделать дополнительные треки (и телепортировать ползунок в них), и так сделать изменение переменной в указанном диапазоне. (Bug: перед телепортированием тректрейна инпутом TeleportToPathNode нужно его сначала остановить, а после телепорта запустить).

Расширение возможностей:

Параллельно этому тректрейну можно установить еще один (smooth_tracktrain_2).  (используя текущий путь треков, просто сместив ось).

 

 

Ставим 2 триггера (расстояние между триггерами и трейном (у меня 3 дюйма) определяется расстоянием между двумя из 9-ти триггеров изменения переменной, соответственно и точностью изменения):

 

 

Флаги как и у предыдущих:


 

Parent:  smooth_tracktrain_2

 

Аутпуты:

Улевого:

OnStartTouch -> smooth_tracktrain_1 -> StartForward

OnEndTouch -> smooth_tracktrain_1 -> Stop

 

У правого (со стороны в которую будет двигаться):

OnStartTouch -> smooth_tracktrain_1 -> StartBackward

OnEndTouch -> smooth_tracktrain_1 -> Stop

 

Управляем эффектом:

 

smooth_tracktrain_2 -> StartForward          -начать увеличение переменной

smooth_tracktrain_2 -> Sop                           -остановить увеличение переменной

smooth_tracktrain_2 -> StartBackward        -начать уменьшение переменной

 

Удобно это все прицепить к game_ui:


 

Снимаем все опции во флагах.

Запустим game_ui с помощью logic_auto:

 

OnMapSpawn -> smooth_game_ui -> Activate -> !player  Delay: 3       -не ставьте меньше 3-х сек. т. к. не успеет запустится.

Управление правой\левой кнопкой мыши.

logic_branch в принципе можно удалить или переключить на smooth_tracktrain_2.

 

На этом все. Исходник прилагаю. Удачи!

 

Автор: Stridemann (stridemann@gmail.com)

Категория: На движке Valve Source | Добавил: stridemann (08.12.2011) | Автор: Stridemann
Просмотров: 2128
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Логин:
Пароль:

Поиск

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

© 2024, MonoLife