前回の記事ではローグライクの戦闘システムを拡張し、レベルと経験値を導入し、プレイヤーが敵を倒すと成長していくシステムを実装しました。
前回の記事:
今回の記事ではプレイ中の情報を行動履歴として表示する自動メッセージウィンドウを追加していきます。
Unity GUIを用いたメッセージウィンドウの作成
先にメッセージ表示のためのUIをシーンUnityのGUI機能を活用してゲーム画面に組み込みます。
上の画像のGameObjectの階層は次のようになっています。
- 「MessageCanvas」
- – 「Root」
- – – 「Message」:単体でプレハブ化する
この中の「Message」はプレハブ化しますので、一度パラメータなどの設定が終わりましたら、シーンから削除してください。
また各GameObjectの作成方法とパラメータの一例は次のものになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
//「MessageCanvas」 メニューのGameObject > UI > Canvasから作成 Canvas Scaler + UI Scale Mode = 「Scale With Screen Size」 + Match = Gameビューがいい感じになるように変更する。 + Reference Resolution X=800 Y=600 (画面サイズを変更した時はここも変更してください) // -「Root」 「MessageCanvas」を選択した状態でGameObject > Empty GameObjectで作成 RectTransform + Anchors Min=(0, 0) Max=(0.25, 1) + Offset Left=0, Right=0, Top=0, Bottom=0 + Pivot = (0, 0.5) VeticalLayoutGroup + ChildAlignment = Upper Left + Padding, Spacing = ともに0 + Child Force Expand = Width=true, Height=false + その他のパラメータはfalse ※再生中に「Message」が増えたり減ったりするので、必要になってきます。 // - -「Message」 「Root」を選択した状態でGameObject > UI > Textで作成 RectTransform + Anchors, Posは「Root」のVerticalLayoutGorupから制御されている。 + Width=100, Height=30 + Pivot = (0.5, 0.5) Text + Text = XXX + FontSize = 24 + Alignment = 縦は中央揃え、横は左揃え + HorizontalOverflow = Overflow + Color = お好みの色でOK! ※「Message」はプレハブ化しますので、設定が終わりプレハブ化したらシーンから削除してください。 |
メッセージウインドウをC#スクリプトで制御していく
それではメッセージをC#スクリプトから表示するようにしていきます。
新しく「MessageWindow.cs」というスクリプトを作成してください。
作成したスクリプトの内容は次のものにしてください。
まとめ
今回の記事ではメッセージウィンドウを作成し、以下の機能を与えました。
- メッセージウィンドウの作成
- メッセージが一定行数溜まったら自然にスクロールして古いメッセージを非表示
- 戦闘時の行動に合わせてメッセージを表示
また、今回はプレイヤー側から見た行動についてのみMessage機能を呼び出していますが、敵に特別な処理を付けてメッセージを表示させたい場合、Enemy.cs側で実装すればOKです。
メッセージに限らず、C#のオブジェクト指向の継承を用いることで、MapObjectBase.csで共通の処理を作成しておき、PlayerとEnemyで異なる行動を作成していくといったことができるようになります。
今回でローグライクゲームの基本となる戦闘システムの作成は終了です。
敵を増やしたり、レベルデザインを行ったりして、ここからはあなたオリジナルのワクワクする戦闘システムに拡張していってください。
また、ローグライクゲームを構成するのは戦闘システムだけではありません。
ダンジョンを無計画に移動しているとお腹が空いて歩くごとに体力がなくなっていく。そして食べ物を見つけられずに無念のゲームオーバー・・・
これもローグライクゲームの醍醐味ですよね。
ということで、次の記事では食料システムを実装します。それでは次の記事に行ってみましょう!
コメント