Menu
CoddyTech

振り返り:弾丸プール

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

challenge icon

チャレンジ

中級

射撃練習。矢印キーで戦車を左右に動かせます(準備済み)。赤いターゲット2つにはTargetスクリプトが設定されており、Hit()を使えます(準備済み)。プールされた弾を戦車から発射できるようにしましょう。

  • Tank.csでは、bulletPrefabから弾を生成し、プールから取り出したときに有効化し、戻ってきたときに無効化し、解放された弾を破棄し、予備の弾を最大4個保持するObjectPool<Bullet>を保持します。
  • スペースキーを押すと、プールから弾を取り出し、戦車の1単位前方から発射します。
  • Bullet.csでは、弾はspeed(15)の速度で前方(+z)に飛びます。Targetスクリプトが付いたものに命中すると(弾のコライダーはトリガーです)、ターゲットのHit()を呼び出し、すぐにプールに戻ります。何にも命中しなかった弾は、life(1)秒後にプールに戻ります。
  • 再利用された弾も含め、発射ごとに弾の寿命が最初から始まり、弾は1回の発射につき1度だけプールに戻ります。

Playを押し、両方のターゲットを撃ってから、Checkを押します。

自分で試してみよう

using UnityEngine;
using UnityEngine.Pool;

public class Bullet : MonoBehaviour
{
    public float speed = 15f;
    public float life = 1f;

    // 前方へ飛び、Target に当たったとき、または life 秒後にプールへ戻る
}

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