復習:モジュラータレット
CoddyのUnityジャーニー「Unityのゲームアーキテクチャ」セクションの一部。レッスン 5/64。
チャレンジ
簡単Turret1 の武器を作りましょう。TurretControl と Cannon は準備できています。
Ammoにpublic bool Take()を書きます。弾薬を1発使ってtrueを返すか、name + " is empty"をログに記録してfalseを返します。Weaponを[RequireComponent(typeof(Ammo))]を持つ抽象クラスにし、Fire()を本体のないprotected abstractにします。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プレイグラウンド