【非公式】某会社設立記念ゲリラ Advent Calendar 2016 12日目の記事です。
FlashゲームをUE4で再実装するゲリラアドカレです。
昨日は体調不良でお休みをいただいていたため、本日更新します。
今回はバトルのロジックを組みたいと思います。
実装項目がかなり多いので、複数回に分けます。
まず、スキルは一旦後回しにして、攻撃、逃走のコマンドを実装していきます。
・注意
許可を取ってないので通常業務の空いた時間を利用して作成するため、作成中のゲーム、及びアドカレは完成保証がなければ、ゲーム自体もリリースされる保証も皆無なので、あんまり期待しないでください。
#構造体作成
バトルは情報が多いため、アクター、もしくはウィジェットを継承したブループリントにバトルに必要な変数を作成すると依存が高くなる、柔軟に対応できなくなるなど色々と問題が出るため、必要な変数をまとめる構造体を作成します。
一部に新規に作成した列挙型を使用しています。
#列挙型作成
#GameStateBase作成
バトルの行動順をGameStateBaseに格納します。
GameInstanceに格納しても同様のことはできますが、バトルの行動順はバトル画面以外は使わないため、こういう形にしました。
とりあえずGameStateBaseを継承したブループリントクラスを作成します。
#コマンド選択
UIのコマンドをクリックした時に実行する処理を書いていきます。
逃走は確立で出来るようにしたいのですが、一旦確実に逃げられるようにします。
逃げに成功した場合はOpenLevelでクエスト画面を呼ぶようにします。
攻撃ボタンを押した時は攻撃を示す構造体データを割く静止して、カスタムしたGameStateBaseに格納します。
このゲームでは3人のコマンドを選ぶ必要があるため、構造体を作成したら3人コマンドを選んだか判定します。
3人選び終わった場合、この時点では一旦クエスト画面に戻すようにしています。
#イベントディスバッチャー登録
とりあえずレベルブループリントで登録したイベントディスバッチャーをバインドさせます。
イベントディスバッチャーで呼ばれたらこのイベントを呼び出すようにしています。
将来的にここから演出再生の呼び出しを行いたいと思っています。
また、キャラを選択したら画像を変えるため、バインド関数、及び簡易的なアニメーションを実装、それをイベントディスバッチャー経由で呼び出すように変えました。
#とりあえずコマンドを選択できるようになった
コマンド選択(攻撃)
— 荻野雄季@クルーズから出荷された豚 (@YuukiOgino) 2016年12月14日
なお、攻撃対象が選べるのはまだ未実装 pic.twitter.com/lGEzlyOTQ9
まだまだ先は長そうです。