Повторение: модульная турель
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 5 из 50.
Задание
ЛегкоСобери две турели на испытательном полигоне из компонентов. 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
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов