Site menu


[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


Search

add_newAdd submission
Latest submissions

<JAM>
m1-palinka


HL-HEV
hl-hev

DS-Servers
Tutorials
Mapping
Source
Продвинутая камера: автонаводка


Продвинутая камера: автонаводка

Добавил: KOT
2013-01-07 12:20:26
310 views

В этом примере использованы башня от танка ( func_tank ) и его дуло ( func_tankmortar ).
Объясню как это всё работает:
Так как танк имеет возможность следить за его мишенью, при этом, вращая свою вышку и дуло на оппределённое количесто градусов, то эти обе части мы будем использовать, как ножку и голову камеры. Возможность вращения, делает камеру более функциональной.
Так же если учесть, что танком можно управлять, то и камерой следовательно тоже, но на этом уроке речь пойдёт не о контролировании камеры, а о её автоматизировании.
Делать камеру будем поочерёдно, тоесть сначало "скелет", потом "тело/обшивка/оболочка".
Начнём со скелета:
Делаем "ножку" камеры: Создаём Браш размерами 27 (высота) х 2(ширина и длина) и затекстуриваем её в текстуру NODRAW. Почему NODRAW ? А чтобы небыло видно этой палки, так как на её месте будет модель.
Теперь эту палку превращаем в func_tank со следующими настройками:
Name: rotation_yaw
Yaw Rate: 35 // скорость кручения ножки нашей камеры.
Yaw Range: 360 // на сколько градусов ножка камеры может поворачиваться.
Barrel lenght: 14 // длина будущей "головы" камеры
Rotate Start Sound: npc/turret_wall/turret_start1.wav // звук при начале вращения
Rotate Loop Sound: npc/turret_wall/turret_loop1.wav // звук при самом вращении
Rotate Stop Sound: npc/turret_wall/turret_stop1.wav // звук при остановки вращения
Заплатка Flags:
Ставим галочку на Activate, чтобы "ножка" была сразу активирована. Тоесть её не придётся включать.
И ставим галочку на Only Direct, что позволит Ножке камеры следить за нами и не стрелять
Делаем "голову" камеры:
Нам понадобится браш размерами 14 ( в длину ) х 4 ( ширина и высота ) и опять же затекстуриваем текстурой NODRAW.
Превращаем браш в Энтити func_tankmortar и ставим следующие настройки:
Name: rotation_pitch
Parent: rotation_yaw // эта опция позволяет вращатся нашей будущей "голове" вместе с "ножкой"
Pith Rate: 20 // скорость движения
Pith range: 70 // наклон "головы" не сможет превысить 70 градусов
Barrel length: 14 // длина "головы"
Заплатка Flags:
Ставим галочку на Activate, чтобы "голова" была сразу активирована. Тоесть её не придётся включать.
И ставим галочку на Only Direct, что позволит Голове камеры следить за нами и не стрелятьИ так наш "скелет" готов. Осталось добавить "тело" и "глаза" для полного счастья =)
Делаем "тело" :
Для "тела" мы будем использовать entity prop_dynamic. Почему Динамическую энтити используем ? Потому что у неё есть важное для нас поле parent.
И так создаём prop_dynamic и в поле parent указываем rotation_yaw, для того чтобы скелет и тело двигались вместе.
Загружаем модель (world model) "models/props_wasteland/camera_arm001a.mdl". Теперь эту модель ставим внутри нашго скелета.
Теперь точно так же загружаем модель "головы" камеры, это "models/props_wasteland/camera_lens001a.mdl".
В поле parent указываем rotation_pitch, чтобы тело двигалось вместе со скелетом.
И теперь ставим её внутри нашего скелетаОсталось добавить "глаза". Это будет камера point_camera.
Создаём камеру, называем её camera1 и в поле parent указываем rotation_pitch.


Ставим её в "голове"..

Теперь когда у нас есть уже готовая камера, надо сделать монитор.
Для создания монитора нам надо создать браш любого размера и превратить в func_monitor, где в поле camera_name укозать имя нашей камеры camera1.
Чтобы наш монитор показывал картинку, надо сделать экран:
Берём инструмент Toggle Texture Application (shift+a) и на одну сторону монитора прилепляем текстуру с именем dev/dev_tvmonitor1a .
Ну казалось бы и всё. Но нет.... Нам надо еще задействовать эту камеру и указать её "цель".
Создаём entity logic_auto. Эта энтити поможет нам запустить скрипт сразу же, как загрузится карта.
В поле Outputs выставляем следующее:
1) My output named: OnMapSpawn
Targets entities named: rotation_yaw
Via This Input: SetTargetsEntityName
With a parameter override of: !player // здесь может быть не только игрок, но и любой NPC. Просто поменяйте это значение на имя другого NPC
// При загрузке карты, "ножка" камеры будет всегда следить за игроком.
2) My output named: OnMapSpawn
Targets entities named: rotation_pitch
Via This Input: SetTargetsEntityName
With a parameter override of: !player // здесь может быть не только игрок, но и любой NPC. Просто поменяйте это значение на имя другого NPC
// При загрузке карты, "голова" камеры будет всегда следить за игроком.
Вот собственно и всё.

 

 

Share:
Keywords: