Предисловие
Спавнер снарядов — это актор который выпускает снаряды (например турель). Так как это актор то его можно поднимать и спускать на платформе, а еще двигать в стороны(двигающийся пол).
Создаем спавнер (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.