パスワードを忘れた? アカウント作成
15275122 journal
日記

yumeの日記: メデューサ・ゲーム改・11

日記 by yume

◉**able、**er
『●●』を作っていて、イベント(UniRx)と委譲をもっとガンガン使った方がいいと気づいた。そうすることでクラスをもっと切り分けられる。
例えば前回までのTouchableには、実際には複数の機能(触れること・インタラクトできること)が混在している。
機能はどんどん切り分けていって、それぞれを最小単位のクラスにわけていこう。ついでに、それぞれの受動側と能動側のクラスを定義することで、機能の組み合わせでキャラクターにできることを設定していく。次のような簡単な規則を使う。

・**able(Touchable、Interactableなど)
>Touchできるもの、Interactできるもの。受動側。
>onTouchやonInteractイベントを発行する。

・**er(Toucher、Interactorなど)
>Touchするもの、Interactするもの。能動側。
>受動側にイベントを発行させる。

互いの関係性も理解しやすい(ToucherはTouchableに干渉できるのはすぐわかる)。し、あるキャラが何をできるか、ある設置物にはどういう干渉ができるかが明白だ。

というかUniRxすごく便利である。

この辺りの「コンポーネントとして使う」のはUnityエディタ的にはわかりやすいけど、本来はMonoBehaviourを継承しない純粋なクラスやInterfaceとして定義すべきだろう。ITouchableとかIInteractableとかにするわけだ。MonoBehaviourを継承すると不要なもろもろを継承してしまうわけだし。

でもUnity的なので一旦このようにしておこう(MonoBehaviourの機能を後から使いたくなるかもしれないし)。直すのもそんなに難しくはない……。と思う。

--

◉プレッシャー・プレート

プレッシャー・プレートを実装する。
プレッシャー・プレートは:
・重みのあるもの(人やアイテム)が上に乗ると、連動して仕掛けを動かす。
という抽象的な概念を持つ。

Toucherが触れればなんであれ反応する、という仕組みにしておき、鏡や重りのようなアイテムにもToucherをつければひとまずうまくいった。

ただ、この場合メカニズムが動くタイミングがアニメーション中になってしまうので、経路探索などに問題が生じるかもしれない。
TurnManagerに「Pressure感知タイミング」みたいなイベントを用意すべきだろう。

といったところで今日はここまで。

typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...