Skip to content
第11回 3D探索4

1 / 4 鍵の所持と扉の開閉をつなぐ ​

このステップの目的

所持状態から操作条件を判断し、扉の状態を変更する

入力と結果を決める ​

第10回で選んだExploreTargetへ、ExplorerInventoryを渡してInteractを呼びます。Inventoryは所持情報、ExploreDoorは扉自身の開閉情報を持ちます。

HasKeyIsOpen案内と操作結果
falsefalse鍵が必要。操作しても開かない
truefalse開ける。操作するとIsOpenがtrueになる
truetrue開いている。再操作しても閉じない

鍵を拾う ​

ExploreKey.Interactの中心処理です。TakeKeyはExplorerInventoryの所持フラグをtrueにする提供済みの入口です。

csharp
inventory.TakeKey();
gameObject.SetActive(false);

先に所持を記録し、次に鍵を無効にします。次の対象選択ではこの鍵のColliderが候補に入らなくなります。

扉の状態を変える ​

ExploreDoor.Interactで条件を判定します。

csharp
if (inventory.HasKey) IsOpen = true;

開閉の表示はUpdateでIsOpenを読み、扉を少しずつ回す処理へ任せます。提示コードでは角度が-95度以下になった時点でNavMeshObstacleを無効にします。所持フラグ、開く指示、実際に通れる時点は別です。

基本例では鍵を消費しません。鍵を持たないまま操作する場合、拾って操作する場合、開いた後に再操作する場合を順に試してください。

チェックリスト
  • 表の3状態で案内と結果を確認した
  • 扉が開いても所持フラグが残る
  • 扉の動きと通行可能になる時点を区別した