Menu
CoddyTech

復習:モジュラータレット

CoddyのUnityジャーニー「Unityのゲームアーキテクチャ」セクションの一部。レッスン 5/64。

challenge icon

チャレンジ

簡単

Turret1 の武器を作りましょう。TurretControl と Cannon は準備できています。

  1. Ammo に public bool Take() を書きます。弾薬を1発使って true を返すか、name + " is empty" をログに記録して false を返します。
  2. Weapon を [RequireComponent(typeof(Ammo))] を持つ抽象クラスにし、Fire() を本体のない protected abstract にします。
  3. Pull() は cooldown 中は何もしません。それ以外の場合、Take() が成功したらクールダウンをリセットし、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プレイグラウンド