Menu
CoddyTech

Повторение: модульная турель

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 5 из 50.

challenge icon

Задание

Легко

Собери две турели на испытательном полигоне из компонентов. TurretControl.cs уже поворачивает каждую турель стрелками влево и вправо, а Shell.cs запускает снаряд вперёд. В сцене у Turret1 есть Cannon и Ammo с 4 снарядами, а у Turret2 — TwinCannon и Ammo с 3 снарядами. Напиши компоненты:

  • Ammo: публичное целое число shells и публичный метод bool Take(). Если остался снаряд, он использует один и возвращает true. Если снарядов не осталось, он выводит имя объекта и is empty, например Turret2 is empty, и возвращает false.
  • Weapon: абстрактный компонент, который всегда идёт в комплекте с Ammo, с публичным полем shellPrefab (GameObject), публичным числом с плавающей точкой cooldown (в Inspector задаётся значение 1) и публичным методом Pull(). Нажатие во время перезарядки ничего не делает и не расходует снаряд. Иначе, если Take() выдаёт снаряд, начинается перезарядка и запускается Fire() — абстрактный метод, который реализует каждое оружие.
  • Cannon запускает один снаряд из точки в 1 единице перед турелью. TwinCannon запускает два снаряда, расходуя один снаряд боеприпасов: один из точки на 0.4 левее, а другой — на 0.4 правее указанной точки. Снаряд появляется в точке transform.position + transform.rotation * offset, повёрнутый так же, как турель (transform.rotation), где offset — смещение точки относительно турели, например new Vector3(0f, 0f, 1f).
  • В TurretControl пробел нажимает на спусковой крючок того объекта Weapon, который есть у турели.

Нажми Play, поворачивай турели и стреляй, пока у обеих не закончатся снаряды, затем нажми Check.

Попробуйте сами

using UnityEngine;

// Что общего у всех орудий турели.
public class Weapon : MonoBehaviour
{
}

Все уроки раздела Архитектура игр в Unity