UIとかステータス値とか

この記事は約3分で読めます。

アクション本で得た知識をもとにUI周りを整備

アクション本でUMGの使い方とプログレスバーなるモノの存在を知ったのでこれを使ってさらにUI周りを強化できないかに挑戦.

最大HPやHP,スタミナなどを取得する要領でキャラクターの名前やサムネイルも取得できるようにしました.

CharacterProfileというアクタコンポーネントを作成し,このコンポーネントでキャラクター情報を管理する方針を立てました.親クラス用のCharacterクラスを作成して他のCharacterをそのサブクラスにするのとどちらが優れているのかは迷ったけれど,キャラクターがダメージ処理が発生するようなアクタにコンポーネントをつけられるなどの利点もありそうなのでひとまずこのコンポーネントを軸にゲームロジックを組んでいくことになりそうです.そもそもどんなゲームを作っているか,ゲームを作っているのかもよくわからない習作ではあるのだけれども.

このコンポーネントに名前とサムネイルをTexture型で配置.TextureはTexture2Dとかどのクラスを使うべきかわからなかったのでただのTextureになっているはず.これをUIとバインドすればサムネ表示も実装完了.

またOpenLevelを使ったタイトルっぽいUIも作成しテストマップとクエスト課題マップを連続的に行き来できるような実装をした.少しずつゲームっぽくなっている気がする.

さらにゲーム的な処理を行いやすくするための機能をCharacterProfileクラスに多数実装.ダメージ計算やMP消費チェックなど.

経験値とか,これによるレベルアップ機能などを盛り込むと一気にそれらしくなる気がする.

調子に乗って用途不明のステータスが大量に用意されてしまった.何に使うかはわからないけど主要なパラメータなので何かには使えそう.どうでもよいところだが魔法防御の表記に迷ってしまった.MDF(Mdef)がよいかとかあるいはMAGを参照する設定にするかとか.またこれらのパラメータを0-255のByte型で持つ方がスリムなんじゃないかと思い,一度わざわざ設定しなおしてみたのだがダメージ計算など能力を参照する際に平方根などを使おうとすると結局float型を経由するのであまり意味がなく,かえって面倒になるだけのようだったので,どのような形で扱うにしても使いやすいfloat型に結局戻ってきた.レベルと経験値だけは少数にならない気がしたので整数値としたが,他は実用の範囲内では精度の心配もあまりなさげだし,精度に問題があるような状況になった場合インフレしすぎている可能性も高いので納得することにした.

そもそもゲームとして何も決まっていないのに謎のこだわりである.

能力値はレベルアップの際,あらかじめ設定しておいた補正値に従った成長する仕組み.

攻撃のほうはTimelineを使って溜め打ちできるようになり,この威力は魔力とLvと溜めの量によって変化するロジックに設定.自動生成する敵を倒しまくってレベルアップしていくだけで楽しく遊べるのは自作ゲームならではだろう.

さて今後はたくさん用意したステータスをもとに計算関数を考えていくのもいいが,またチュートリアルをこなしてUE経験値を積みたい感もある.Udemyのチュートリアルでまだこなせていないものもあるのでそちらに手を付けるのもありかな.

コメント

タイトルとURLをコピーしました