Games-source.narod.ru - Всё об играх на движке Source™
Учебники
Движущийся лазер
В изображении выше лазер перемещается по 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 tripwireFlags: Start On
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: info_overlay
Material: decals/decalborealispuddle001a
Я поместил env_cubemap, ambient_generic для звука и trigger_multiple, чтобы запустить звук, когда игрок наступает на лужу.
Class: ambient_generic
Name: WaterSound
Sound name: Water.StepLeft
Volume: 4
Flags:
Start Silent
Is NOT Looped,
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».
Статья http://source-inside.ru