DECORATE. Создание hitscan оружия.

Этот урок был сделан по реквесту ‘Мансур Новиков, свои реквесты можете оставить в комментарях на сайте, или в группе ВК.

Данный урок является продолжением урока DECORATE. Делаем оружие.

Введение

В Doom есть 2 типа оружия, то что стреляет снарядами (ракеты, плазма), и то что стреляет пулями (пистолет, дробовик). Оружия стреляющие пулями, мгновенно попадают в цель, поэтому я их буду назвать hitscan оружиями.

Создаем BulletPuff.

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

Сперва, создадим BulletPuff для нашего оружия. Для этого, скопируйте следующий код к себе в DECORATE.

actor myPuff
{
	+NoBlockmap 
	+NoTeleport
	+NOGRAVITY
	states 
	{
		Spawn:
		  IFOG AB 2
		Melee:
		  IFOG CDE 4
		  Stop
	}
}

Пробежимся по флагам.

  • +NoBlockmap — отключает коллизию актора
  • +NoTeleport — запрещает актору телепортироваться.
  • +NoGravity — выключает гравитацию

Двигаемся дальше.

Добавляем bulletPuff к Hitscan оружию.

Добавьте следующий код к себе в Decorate:

ACTOR coolGun : Weapon
  {
     Weapon.SelectionOrder 350
     Inventory.PickupSound "misc/usgpickup"
     Weapon.AmmoGive 200
     Weapon.AmmoUse 1
     Weapon.SlotNumber 3
     Weapon.AmmoType "Cell"
     +Floatbob
     AttackSound "weapons/ubersgf" 
     States
     {
     Spawn: 
        SHTG A -1
        Stop
     Ready: 
        SHTG A 1 A_WeaponReady
        Loop 
     Deselect: 
        SHTG A 1 A_Lower
        Loop 
     Select: 
        SHTG A 1 A_Raise
        Loop 
     Fire: 
        SHT2 I 1 A_FireBullets(10, 10, 1, 45, "myPuff")
	SHT2 C 2
	SHT2 DE 5 A_ReFire
        Goto Ready
     }
  }

Среди всего этого, нас интересует эта строка:

Fire: 
  SHT2 I 1 A_FireBullets(10, 10, 1, 45, "myPuff")

А именно команда A_FireBullets, разберем её синтаксис:

A_FireBullets(разброс_по_оси_x, разброс_по_оси_y, количество_потребляемых_патронов, минимальный_урон, "BulletPuff")
  • разброс_по_оси_x, разброс_по_оси_y — задают отклонение пуль, по осям x,y
  • количество_потребляемых_патронов — задает количество потребляемых патронов за выстрел.
  • минимальный_урон — задает урон от попадания по врагу (умножается на случайное число от 1 до 3)
  • BulletPuff — задает название актора, который будет появляться, в месте выстрела.

Подробнее на вики.

Таким образом, в этой строке:

SHT2 I 1 A_FireBullets(10, 10, 1, 45, "myPuff")

Мы установили:

  • разброс пуль в 10 градусов по осям x,y,
  • урон в 45 единиц здоровья
  • спавн актора myPuff, на месте выстрела.

В итоге, должно получится следующее.

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

avatar

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

Please disable your adblocker or whitelist this site!