Menu
CoddyTech

復習:モジュール式タレット

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

challenge icon

チャレンジ

簡単

テスト射場の2基の砲塔を、パーツから組み立てましょう。TurretControl.csはすでに左右の矢印キーで各砲塔を回転させ、Shell.csは砲弾を前方に飛ばします。シーンでは、Turret1にCannonと砲弾4発入りのAmmo、Turret2にTwinCannonと砲弾3発入りのAmmoが設定されています。各パーツを作成しましょう。

  • Ammo:public int shellsと、publicメソッドbool Take()を作成します。砲弾が残っている場合は1発使い、trueを返します。砲弾が残っていない場合は、オブジェクトの名前とis emptyを使ってログを出力します(例:Turret2 is empty)。その後、falseを返します。
  • Weapon:必ずAmmoを持つ抽象コンポーネントです。publicなshellPrefab(GameObject)、public float cooldown(Inspectorで1に設定)、publicメソッドPull()を作成します。クールダウン中にトリガーを引いても何も起こらず、砲弾も消費しません。それ以外の場合、Take()で砲弾を取得できたら、クールダウンを開始し、Fire()を実行します。Fire()は各武器で実装する抽象メソッドです。
  • Cannonは砲塔の前方1ユニットの位置から砲弾を1発発射します。TwinCannonは砲弾1発分の弾薬で2発発射します。発射位置は、基準位置から左に0.4、右に0.4です。砲弾はtransform.position + transform.rotation * offsetの位置から、砲塔と同じ向き(transform.rotation)で発射されます。ここでoffsetは砲塔から見た位置で、たとえばnew Vector3(0f, 0f, 1f)です。
  • TurretControlでは、Spaceキーを押すと、その砲塔が持つWeaponのトリガーを引きます。

Playを押して、両方の砲塔の弾がなくなるまで向きを変えて発射し、その後Checkを押してください。

自分で試してみよう

using UnityEngine;

// すべてのタレット武器に共通するもの。
public class Weapon : MonoBehaviour
{
}

Unityにおけるゲームアーキテクチャのすべてのレッスン