Имитация смены направления гравитации

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Понадобилось мне сделать на карте смену направления гравитации на определенном участке. Но таких entity не предусмотрено, следовательно без кодинга не обойтись. И решил я сымитировать эту смену направления гравитации.

Используемые энтити

Реализация

Делаем две комнаты - в одной игрок рождается, во вторую, соответственно, идет после рождения. Я сделал две комнаты, одна над другой, и между ними - проход. Из нижней комнаты я сделал func_door_rotating с параметрами:

Параметр Значение
Name room1
Speed 200
Delay before close -1
Lip 90

Флаги

X Axis

В проходе надо поставить trigger_once так, чтобы он не касался стен, и trigger_gravity вровень с полом - чтобы игрок не активировал его раньше времени. Только не забудьте потом поставить еще один trigger_gravity для деактивации первого.

Параметры trigger_once:

Параметр Значение
Target room1
Delay before trigger 0.5

Параметры trigger_gravity:

Параметр Значение
Gravity 0.5

Результат

Теперь, когда игрок заходит в другую комнату, она (со всем содержимым) переворачивается набок, и создается ощущение, ходьбы по стене. Из декоративных мелочей я сделал копию верхней комнаты и, перевернув ее на бок, подставил туда, где будет проход нижней комнаты после "смены гравитации". Можно конечно поиграться с тем же func_rotating или func_door_rotating, чтобы не копировать комнату, а переносить ее туда куда надо. Но мне было лень, и для моих целей хватало того, что я сделал.

Автор: Slux
Дата: 27.09.2008