Menu
CoddyTech

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

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

challenge icon

Задание

Легко

Создай оружие для Turret1. TurretControl и Cannon готовы.

  1. В Ammo напиши public bool Take(): используй снаряд и верни true или выведи в журнал name + " is empty" и верни false.
  2. Сделай Weapon абстрактным классом с [RequireComponent(typeof(Ammo))], а Fire() — protected abstract без тела.
  3. Pull() ничего не делает во время cooldown; иначе, если Take() возвращает true, перезапусти время перезарядки и вызови Fire().

Нажми «Играть» и стреляй, пока снаряды не закончатся. Затем нажми «Проверить».

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

using UnityEngine;

// Что общего у всех орудий турели.
public class Weapon : MonoBehaviour
{
    public GameObject shellPrefab;
    public float cooldown = 1f;

    public void Pull()
    {
        // дождаться окончания cooldown, взять снаряд из Ammo, затем выстрелить
    }

    // Каждое орудие стреляет по-своему.
    protected virtual void Fire()
    {
    }

    // Снаряд вылетает из этой точки относительно турели в направлении, куда она смотрит.
    protected void Launch(Vector3 offset)
    {
        Instantiate(shellPrefab, transform.position + transform.rotation * offset, transform.rotation);
    }
}

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

Потренируйтесь самостоятельно: Песочница Unity