В изображении выше лазер перемещается по path_track и при соприкосновении с игроком убивает его. Лазер расположен таким образом, чтобы игрок смог перепрыгнуть через него в любое время. Игрок не сможет пройти под лазером. Есть
несколько способов создать эффект подобно этому, любые параметры и
настройки, используемые в этом туторе могут быть легко изменены как вам
угодно. На каждую сторону были помещены спрайты для эффекта прожига.
Также при помощи info_overlay будет создана лужа со звуком всплеска.
Для
всего этого нам понадобятся 4 энтити: func_tracktrain (заставляет
двигаться наш лазер), env_beam (Луч), env_sprite, (спрайт, по желанию),
path_track (путь, по которому двигается лазер).
Расположите все 4 энтити как показано на картинке.
Прозрачный = func_tracktrain (браш, превращенный в Entity func_tracktrain) Фиолетовый = env_beam Зеленый = env_sprite Красный = path_track
Class: env_beam (Луч)
Name: Beam01 (Правую сторону назовите Beam02) Parent: Beam01train (Правую сторону назовите Beam02train) Brightness: 75 Beam Color: 255 0 0 Life: 0 (Infinite) (Время существования лазера в секундах,0= бесконечно) Width of Beam: 0.7 (Ширина луча) Noise: 0 ("количество” неровностей в луче,0= прямой луч) Sprite name: sprites/laserbeam.spr Texture scroll rate: 40 Damage: 1000 (Урон, наносимый игроку) Start Entity: Beam01 (Beam02 для правой стороны) Ending Entity: Beam02 (Beam01 для правой стороны) Touch Type: Not a tripwire
Flags: Start On
Это параметры настройки для каждого env_sprite, которые используются только для небольшого эффекта (прожига)
Class: env_sprite Parent: Beam01 (Beam02 для правой стороны) Render FX: Normal Render Mode: Additive FX Amount: 150 FX Color: 255 0 0 Disable receiving shadows: Yes Frame rate: 10.0 Sprite name: materials/sprites/glow03.vmt Scale: 0.2 (Масштаб) Size of Glow: 2.0
Flags: Start on
Все func_tracktrain покрасьте текстурой toolsinvisible. Параметры настройки для каждого func_tracktrain:
Class: func_tracktrain Name: Beam01train (Beam02train для правой стороны) Disable receiving shadows: Yes Disable Shadows: Yes First Stop Target: Beam01path01 (Beam02path01 для правой стороны) Max speed: 60 Initial Speed: 60 (Начальная скорость) Change Velocity: Instantaneously Change Angles: Near path_tracks Distance between the wheels: 10 Height above the track: 0 Bank angle on turns: 0 Move sound: d3_citadel.weapon_zapper_beam_loop1 (только для левой стороны) Volume: 2
Flags: No User Control, (Без управления пользователя) Passable, (Проходимый) Fixed Orientation, (Установленное передвижение) Is unblockable by Player.
Все
func_tracktrain покрасьте текстурой toolsinvisible. Заметьте, что в
изображении ниже присутствуют только 4 path_track (По два на каждой
стороне, для каждого func_tracktrain)
На левой стороне первый
path_track ссылается (Next Stop Target) на второй path_track, который в
свою очередь ссылается на первый path_track, это заставляет
перемещаться лазер вперёд назад бесконечно.
Параметры настройки для первого path_track на левой стороне: Class: path_track Name: Beam01path01 (Beam02path01 для правой стороны) Next Stop Target: Beam01path02 (Beam02path02 для правой стороны)
Добавляя
больше path_track вы можете заставить лазер перемещаться
зигзагообразно. Можно также добавить ещё по несколько лазеров на каждую
сторону для двойного эффекта.. Обратите внимание: env_beam
использовался на каждой стороне, а не на одной стороне только затем,
чтобы лазерный эффект был намного лучше, эксперементируйте.
Водный эффект для лужи сделан при помощи info_overlay.
Class: trigger_multiple Start disabled: No Delay before reset: 1
Flags: Clients, Everything
Output: OnStartTouch, WaterSound, PlaySound
Этот тутор содержит два vmf файла. Во втором примере Лазер поворачивает за угол и перемещается по другому туннелю.
Заметьте, что спрайты для второго примера не используются. Смотрится лучше без них. Смотрите
на Outputs для path_tracks в углу, два path-track (там, где совершается
поворот) должны быть расположены друг напротив друга. Если вы
хотите, чтобы лазер телепортировался в начало движения (т.е. начинал
своё перемещение постоянно от первых path_tracks), то в первых двух
path_tracks во флагах поставьте «Teleport to this path_track» Смотрите исходник и всё поймёте