This article relates to the game "Portal". Click here for more information.

Creating a rotating portalgun

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)Русский (ru)Translate (Translate)


Width:64

В этом учебнике мы создадим вращающийся стенд с прикреплённой портальной пушкой, которая будет автоматически открывать порталы.

Подготовим модели

Потребуется две prop_dynamic энтити, по одной для каждой из следующих моделей:

  • models/props/pedestal_base_reference.mdl. Назовите её stand_bottom_model и установите параметр "disableshadows" на 1.
  • models/props/pedestal_center_reference.mdl. Назовите её stand_top_model.

Подготовим браши

Создаёте два браша с такими размерами:

  • 32 x 32, высота - 4, использовать текстуру tools/nodraw(en).
  • 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
Io11.png OnTimer stand_func_rotating Start <none> 0.00 No
Io11.png OnTimer stand_func_rotating Stop <none> 3.00 No
Io11.png OnTimer weapon_portalgun FirePortal1 <none> 3.00 No


Создайте новый аутпут у stand_func_door:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnFullyOpen stand_bottom_model SetAnimation close 0.00 No


Теперь делаем аутпуты у stand_bottom_model:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnAnimationDone stand_bottom_model SetAnimation inactive 0.00 No


И несколько аутпутов для weapon_portalgun:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPlayerPickup timer_stand Kill 0.00 No
Io11.png OnPlayerPickup stand_top_model SetParent stand_func_door 0.00 No
Io11.png OnPlayerPickup stand_func_door Open 0.80 No

Parent-ы и "дырка"

Всё готово. Заметьте, что отверстие сделано на полу.

Сейчас установим параметр parent у weapon_portalgun и stand_top_model на stand_func_rotating. Когда всё будет готово, сделайте дырку в форме цилиндра на полу ниже stand_bottom_model, как показано на картинке справа.

Финал

Вдобавок, вы можете создать portal frame на каждой стене, на которых будут открываться порталы.

Чтобы это сделать, создайте prop_static энити с моделью models/props/autoportal_frame/autoportal_frame.mdl, Переместите её к стенке, на которой вы собираетесь её разместить, поверните её так, чтобы она встала параллельно к стене.

Или вы можете создать portal frame из брашей с такими параметрами:

  • Размер - 8 x 2, высота - 128
  • Расстояние между брашами - 64 юнита
  • Текстура на передней стороне брашей - signage/fixed_portal_border
  • Текстуры по бокам - signage/signage_border

Смотрите также