振り返り:インタラクトキー
CoddyのUnityジャーニー「Unityにおけるゲームアーキテクチャ」セクションの一部。レッスン 9/50。
チャレンジ
簡単プレイヤーにインタラクトキーを設定します。矢印キーでPlayerを歩かせ(Mover.csは準備済み)、Spaceキーで、使用可能な範囲内にある最も近いものを使えるようにします。次の部分を作成してください。
- IInteractable:1つのメソッド
void Interact()を持つインターフェース。 - Door:使うたびに開閉します。開くとy軸を中心に90度回転し、
Door openedをログに出力します。閉じると元の向きに戻り、Door closedをログに出力します。 - Chest:最初に使うと
Found 5 coinsをログに出力して、中身を空にします(coinsはInspectorで設定します)。それ以降に使うと、毎回The chest is emptyをログに出力します。 - Lever:使うたびに
bridge(Inspectorで設定するGameObject。開始時は非表示)をオンまたはオフに切り替え、Lever pulledをログに出力します。 - Interactor(Player上):Spaceキーが押されたとき(Input Systemの
Keyboard.currentで読み取ります)、Physics.OverlapSphereを使ってreach(1.5)以内のコライダーを探し、IInteractableを持ち、位置がプレイヤーに最も近いものにInteract()を呼び出します。範囲内に何もなければ、何も起こりません。
プレイを押して、歩き回りながらすべてを使い、その後チェックを押してください。
自分で試してみよう
using UnityEngine;
using UnityEngine.InputSystem;
// Spaceは手の届く範囲で最も近いものを使います。
public class Interactor : MonoBehaviour
{
public float reach = 1.5f;
}