Ru/Creating a rotating portalgun

<onlyinclude>
В этом учебнике мы создадим вращающийся стенд с прикреплённой портальной пушкой, которая будет автоматически открывать порталы.
== Подготовим модели ==
Потребуется две энтити, по одной для каждой из следующих моделей:
* models/props/pedestal_base_reference.mdl. Назовите её stand_bottom_model и установите параметр "disableshadows" на 1.
* models/props/pedestal_center_reference.mdl. Назовите её stand_top_model.
== Подготовим браши ==
Создаёте два браша с такими размерами:
* 32 x 32, высота - 4, использовать текстуру .
* 4 x 32, высота - 55, также использовать текстуру tools/nodraw.
== Движение ==
Переместите stand_bottom_model туда, где будет стоять стенд. Мелкие дверцы внизу модели должны находиться под землёй. Теперь переместите stand_top_model над stand_bottom_model, как показано на картинке справа.
Сопоставьте первый браш (с размерами 32x32) с stand_top_model. Установите на оси Z (высоте) около половины высоты stand_top_model.
Теперь передвиньте второй браш к стенке стенда, как показано на картинке справа.
== Брашевые энити ==
Выберите первый браш и превратите его в func_rotating энити со следующими параметрами:
::
Property Name 	Value
Name 	stand_func_rotating
Max Rotation Speed	30
 	
В списке флагов снимите галочку Start ON.
Превратите второй браш в func_door с такими параметрами: 
::
Property Name 	Value
Name 	stand_func_door
Speed 	25
Move direction: 	90 0 0
Delay Before Reset	-1
В списке флагов снимите галочку Passable.
== Портальная пушка ==
Создайте энити weapon_portalgun. Назовите её weapon_portalgun.
Поместите её точно на макушку stand_top_model. Портальная пушка должна быть направлена налево, если вы смотрите на stand_top_model со стороны, где видно синюю стрелочку, как на первой картинке наверху этой страницы.
== Определение аутпутов у энитей ==
Сделайте logic_timer энити, назовите timer_stand и установите его refire interval на 5 секунд. Убедитесь, что start enabled у энити включён.
А теперь идём в аутпуты и пишем:
::
	My Output	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnTimer 	stand_func_rotating	Start 	<none> 	0.00 	No
	OnTimer 	stand_func_rotating	Stop 	<none> 	3.00 	No
	OnTimer 	weapon_portalgun 	FirePortal1 	<none> 	3.00 	No
Создайте новый аутпут у stand_func_door: 
::
	My Output 	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnFullyOpen	stand_bottom_model	SetAnimation	close 	0.00 	No
Теперь делаем аутпуты у stand_bottom_model:
::
	My Output 	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnAnimationDone	stand_bottom_model	SetAnimation	inactive 	0.00 	No
И несколько аутпутов для weapon_portalgun:
::
	My Output 	Target Entity 	Target Input	Parameter 	Delay	Only Once
	OnPlayerPickup	timer_stand 	Kill 	 	0.00 	No
	OnPlayerPickup	stand_top_model	SetParent 	stand_func_door	0.00 	No
	OnPlayerPickup	stand_func_door	Open 	 	0.80 	No
== Parent-ы и "дырка" ==
Сейчас установим параметр parent у weapon_portalgun и stand_top_model на stand_func_rotating.
Когда всё будет готово, сделайте дырку в форме цилиндра на полу ниже stand_bottom_model, как показано на картинке справа.
== Финал ==
Вдобавок, вы можете создать portal frame на каждой стене, на которых будут открываться порталы.
Чтобы это сделать, создайте энити с моделью models/props/autoportal_frame/autoportal_frame.mdl, Переместите её к стенке, на которой вы собираетесь её разместить, поверните её так, чтобы она встала параллельно к стене.
Или вы можете создать portal frame из брашей с такими параметрами:
* Размер - 8 x 2, высота - 128
* Расстояние между брашами - 64 юнита
* Текстура на передней стороне брашей - signage/fixed_portal_border
* Текстуры по бокам - signage/signage_border
== Смотрите также ==
* /onlyinclude>