復習:FindNearest
CoddyのUnityジャーニー「Unityにおけるゲームアーキテクチャ」セクションの一部。レッスン 36/50。
チャレンジ
中級掃除ロボットは宝石を集めてから、充電しに行きます。Gem と ChargePad は空のマーカー スクリプト(準備済み)で、ロボットには MoveTo(point) があり、speed で指定した地点に向かって移動し、到着すると true を返します。
Helpers.csに、任意のコンポーネント型に対応するジェネリックメソッドFindNearest<T>(IEnumerable<T> items, Vector3 from)を持つ静的クラスHelpersを作成します。このメソッドは、位置がfromに最も近いアイテムを返し、アイテムがない場合は null を返します。Robot.csでは、ロボットが毎フレーム、現在位置からシーン内で最も近い宝石に向かい、到着したらその宝石を破棄します。- 宝石がなくなったら、ロボットは最も近い
ChargePadに向かいます。到着するとChargingを一度ログに記録し、その場にとどまります。
宝石とパッドの両方に FindNearest を使用します。再生を押してロボットの動きを確認し、その後確認を押します。
自分で試してみよう
using System.Collections.Generic;
using UnityEngine;
// Helpers.FindNearest<T>: ある点に最も近い要素、または null