第11回 3D探索4
1 / 4 鍵の所持と扉の開閉をつなぐ
このステップの目的
所持状態から操作条件を判断し、扉の状態を変更する
入力と結果を決める
第10回で選んだExploreTargetへ、ExplorerInventoryを渡してInteractを呼びます。Inventoryは所持情報、ExploreDoorは扉自身の開閉情報を持ちます。
| HasKey | IsOpen | 案内と操作結果 |
|---|---|---|
| false | false | 鍵が必要。操作しても開かない |
| true | false | 開ける。操作するとIsOpenがtrueになる |
| true | true | 開いている。再操作しても閉じない |
鍵を拾う
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状態で案内と結果を確認した
- 扉が開いても所持フラグが残る
- 扉の動きと通行可能になる時点を区別した