DECORATE. Спавнер снарядов.

Предисловие

Спавнер снарядов — это актор который выпускает снаряды (например турель). Так как это актор то его можно поднимать и спускать на платформе, а еще двигать в стороны(двигающийся пол).

Создаем спавнер (1).

Пропишите следующий код к себе в DECORATE:

actor spawner2 10001
{
  height 16
  radius 16
  states
  {
    spawn:
      TNT1 A 2 A_SpawnItemEx ("Rocket", 50.0, 0, 0, 20.0, 0, 0, 0)
      loop
  }
}

spawner2 — это простейший актор, который спавнит снаряды, при помощи функции A_SpawnItemEx. Теперь, разберем синтаксис этой функции.

A_SpawnItemEx ("название_снаряда", смещение_x, смещение_y, смещение_z, скорость_x, скорость_y, скорость_z, угол)
  • название_снаряда — название актора снаряда
  • смещение_x — задает смещение по x
  • смещение_y — задает смещение по y
  • смещение_z — задает смещение по z
  • скорость_x — задает скорость по координате x
  • скорость_y — задает скорость по координате y
  • скорость_z — задает скорость по координате z
  • угол — задает угол снаряда, если 0, то снаряд спавнится там, куда смотрит спавнер.

В нашем случае :

A_SpawnItemEx ("Rocket", 50.0, 0, 0, 20.0, 0, 0, 0)
  • название_снаряда — спавним ракету
  • смещение_x — спавнер заспавнит ракету, на расстоянии 50 пикселей впереди себя.
  • скорость_x — скорость ракеты 20 пикселей в секунду.

Таким образом, мы создали невидимый актор, который спавнит ракеты с интервалом в 2 тика.

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

Создаем спавнер (2).

По аналогии, я создал спавнер, который стреляет некоторое время, потом останавливается, потом снова стреляет.

actor spawner1 10000
{
  height 16
  radius 16
  states
  {
    spawn:
      TNT1 AAAAAAAAAA 2 A_SpawnItemEx ("Rocket", 50.0, 0, 0, 20.0, 0, 0, 0)
      TNT1 A 35
      loop
  }
}

В этой строке:

TNT1 AAAAAAAAAA 2 A_SpawnItemEx ("Rocket", 50.0, 0, 0, 20.0, 0, 0, 0)

Мы выстреливаем несколько снарядов. А здесь.

TNT1 A 35

Происходит задержка в 1 секунду (1 сек = 35 тиков).

Таким образом, после очереди выстрелов, идет перезарядка (заддержка).

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

Двигаем пол и потолок.

Как я уже говорил в начале, спавнер является актором, поэтому его можно двигать на платформе (вверх/вниз). Попробуем это реализовать.

Для реализации, я буду использовать функцию Floor_Waggle и Ceil_Waggle, из ACS. Это функции, которые перемещают пол/потолок вверх вниз — без остановки. Floor_Waggle — перемещает пол, Ceil_Waggle — перемещает потолок.

Теперь, перепишите в ACS, следующий код:

script 1 ENTER
{
  Floor_Waggle(3,1000,50,10,0);
  Ceiling_Waggle(3,1000,50,10,0);
}

Вот эта строка:

script 1 ENTER

Значит что скрипт 1 запустится при входе на карту.

Floor_Waggle(1,32,90,0,0);

Синтаксис у Floor_Waggle следующий:

Floor_Waggle (tag, амплитуда, частота, смещение, количество_раз)
  • tag — задает тег сектора, который мы будет поднимать / опускать.
  • амплитуда — указывает насколько высоко / низко будет подыматься / опускаться пол.
  • частота — указывает скорость поднятия / опускания.
  • количество_раз — указывает количество подниманий и опусканий, если указано 0, то пол будет подниматься и опускаться — бесконечно.

Синтаксис Ceil_Waggle тот же, только здесь перемещается потолок.

Таким образом, скрипт 1 перемещает потолок и пол — по синусоиде. Создайте сектор с тегом 3, и поставьте в него — спавнер снарядов. Поигравшись немного, вы сможете достичь следующего:

Скачать wad, вы можете на MEGA.

Итоговый результат.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!