本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回はシャワーアイテムの水流から水の当たり判定を生成するロジックを追加しました。
水の当たり判定
アイテムの処理を共通化するに当たり、シャワーアイテムの子オブジェクトとして生成していた水の当たり判定もスポーン処理で別に生成するようにしました。
特殊なアイテムをスポーンする
これに伴い、シャワーアイテムのコンポーネントに別アイテムをスポーンするためのインタフェースを継承させました。
・ItemShowerHeadGimmickAccessAPI.cs
using HoloMonApp.Content.SupportItem.Spawn; using UnityEngine; namespace HoloMonApp.Content.SupportItem.Objects.Artifacts.Gimmick.Shower { public class ItemShowerHeadGimmickAccessAPI : ItemArtifactAccessAPI, IItemGenerateTypeAPI { [SerializeField] private ItemShowerHeadGimmickBehaveController _itemShowerHeadGimmickBehaveController; public void SetItemSpawnAPI(ItemSpawnAPI itemSpawnAPI) { _itemShowerHeadGimmickBehaveController.SetItemSpawnAPI(itemSpawnAPI); } } }
・IItemGenerateTypeAPI.cs
using HoloMonApp.Content.SupportItem.Spawn; namespace HoloMonApp.Content.SupportItem.Objects { public interface IItemGenerateTypeAPI { void SetItemSpawnAPI(ItemSpawnAPI itemSpawnAPI); } }
前回紹介したアイテムのスポーン処理を管理するコンポーネントからアイテムをスポーンするとき、本インタフェースが実装されているアイテムである場合は必要な初期化を行います。
・ItemSpawnAPI.cs
private IItemGenerateTypeAPI SpawnGenerateItem(SpawnItemType type, Pose pose, float ratio, SpawnItemType standType) { IItemGenerateTypeAPI spawnGenerateItem = null; BItemAccessAPI spawnItem = _spawnItemProfileList.GetProfileByType(type).AccessAPI; if (spawnItem is IItemGenerateTypeAPI spawnItemGenerateType) { spawnItem.SpawnObject(); spawnItemGenerateType.SetItemSpawnAPI(this); spawnGenerateItem = spawnItemGenerateType; SpawnItem(standType, pose, ratio); } return spawnGenerateItem; }
上記のコードで利用している is 演算子は C# 9.0 以降で利用可能な演算子です。
インスタンスと指定の型に互換性があるかどうかをチェックすると共に、互換性がある場合は値の代入も実施されます。
learn.microsoft.com
Unity では 2021.2 以降で利用可能です。詳細は以下の記事を参照ください。
bluebirdofoz.hatenablog.com