12/29こんにちは。ブログ毎日更新は363日目になります。プレイヤーが調べるとイベントが発動するという仕組みを作ります。最初のエリアでハンマーを取るときや壊せる岩を調べた時にそのオブジェクトがもつイベント情報を取得し、それをイベント駆動配列にAddすればイベントシーンに切り替わるという仕組みがよさそうです。押す引く処理で似たような処理を作っているのでそれの応用ですね。ステータスにイベントキューを作るプレイヤーのステータスにイベント用のキュー配列を作っておきましょう。イベントキューは毎フレーム監視しておき、キューに1つでも要素が入ったときイベントシーンに切り替わるようにします。State_Playerに以下を追記しましょう。一応ゲッターとセッターを作っておきます。プロパティをsetとgetで分けているのは型の問題です。getはList型のstringを返しますが、setはstring型を受け取りたいので一緒にすることはできませんでした。セッターはイベントを調べた時にリストにAddできるようにしておけばイベント発生がかなり楽ですね。取り出す時は0個目を取り出す関数を使用します。取り出す関数はイベントマネージャーで利用するのでpublicにしておきました。どこまで必要かはわかりませんが、関数が要らなかった場合後から削除してもOKです。後はこの変数を監視しておけばOKです。}イベントキュー監視はこんな感じにします。移動イベントで「_gameSceneState」で管理してましたね。イベントはこの変数で管理していくので移動イベントも後にキューにイベントリストを渡すように修正していきましょう。現状ステート1~4が移動処理になっているので、5をメッセージイベントと見立てて組み立てます。イベントスプライトを調べられるようにするこれはもう押す引くで基本的な処理が出来上がっているのでそれを利用します。向いてる方向に決定ボタンを押したら調べるというものにしましょう。方法をおさらいしておくと、Linecastを使って前方に判定を飛ばしてそのオブジェクトが持つイベントリストを取得してイベントキューに渡せば監視スクリプトがイベント発動とみなしてイベント処理状態になります。ハンマーにイベントリストを持たせましょう。State_Eventスクリプトを作成します。}}シンプルにstring型のインスタンス配列を持たせてpublicにしてプロパティで設定できるようにしました。int配列でもよかったのですが、stringにして数字をカンマ区切りにして0個目がイベント種類1個目がイベント内容2個目が次のイベントに続くかどうかのフラグ最後に0のイベントを入れることでイベント終了の合図とします。string型のsplit関数を使えば指定した文字を区切り文字として対象の文字列を分割して配列を返してくれます。数字とカンマだけにしておけば数字の文字配列ができあがるため、intにキャストしてあげることで数値を取ることが出来ますね。プロセス的に非効率な気もしますが、視覚的にわかりやすいのを一旦優先します。いい方法が見つかったらそちらに載せ替えて実装しなおしですね。jsonでの管理が便利そうだったのでそのうちjsonを使えるようにしてみます。string配列でいきましょう。それではスクリプトをハンマーオブジェクトに取り付けてみます。こんな感じで管理していきます。内訳を説明すると配列0個目の1つ目の数値の5はメッセージイベントという意味です。2つ目の1はメッセージイベントの配列1つ目のメッセージデータを取ってくるというわけですね。次に3つめの0はこのイベントが最後だよという合図です。一応念のために最後は0のイベントを入れておき、この0イベントがあった場合は強制的にイベントを終了するという仕組みにしておけばイベント状態でのフリーズを回避することができます。体験版では使用するかは不明です。オブジェクトを調べて保持しているイベントリストの取得をしてみようプレイヤーオブジェクトを調べられるようにしてイベントリストを取得できるところまでやってみます。Zは攻撃キーなのでAキーを割り当てましょう。}これでAキーが有効になりました。次にAキーを押したときにLinecastを飛ばすように作ります。Action_Managerに以下の関数を作ります。}これを引き継いでAction_Playerで実装しましょう。}押す引くオブジェクト取得の仕組みをそのまま使えますね。取得対象レイヤーをEventにすればイベントレイヤーに属するオブジェクトだけをチェックすることが出来ます。Unity側でレイヤー作成で「Event」レイヤーを作りましょう。これでハンマーの持つイベントリストを取得することができました。イベントキューに渡してイベントモードにする今回はイベントの仕組みを作るということでここまでにします。次回は取得できたイベントリストをもとにイベントキューに格納していき、イベントモードに切り替えて対応するイベントを判断する仕組みを作ります。この仕組みが出来てしまえばあとは対応するイベントの分岐を作っていくだけですね。最初はメッセージを表示するイベントを作っていきます。12/21なおキーヌ某なんでも屋企業のシステム管理者を務めつつリーマンからの解放を目指して奮闘中。FE&BE開発・Webデザイン・DTPデザイン・SEO・Webライティング等一人である程度のクオリティで大体のことが出来るなんでもエンジニア。小学校の夢でもあったゲームクリエイターを目指して2019年から少しずつ積み上げています。ゲーム作りの参考書TOP。