SRPGの作り方12 スマホアプリ化対応カメラ移動・属性システム・BGMと効果音の開発

Unity SRPG(戦略シミュレーションゲーム)の作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

この講座はUnityとC#で作るSRPGのプログラミング開発講座の第12回です。

前回の記事で敵の行動AIパターンやターン変更システムの実装まで完了し、一通り最低限の形でターン制戦略シミュレーションゲームが遊べるようになりました。

前回の記事:

ターン制戦術SRPGの作り方11 敵のターン制ストラテジーAIシステムを開発する
この記事はターン制の戦術SRPGのプログラミング開発を解説する講座の第11回目です。 今回の記事はチェスや将棋などを含めたボードゲームやオリジナルの戦術SLGストラテジーを組む際にも役立つ内容です。 前回の記事でDoTweenのインスト...

この章からははより遊びやすくするために各所に改良を施していきます。

具体的には、スマホアプリ化にも対応しているカメラ移動の処理・属性攻撃システムの実装・BGMと効果音の実装を行います。


【Line登録者限定のプレゼントもあるよ!】

画面を押しっぱなしにする処理を作り、カメラ移動処理を実装する

現在メインカメラは斜め上からマップ中央を向く形で位置しています。

この位置関係をそのままに、横や後ろから回り込めるように移動できるようにさせましょう。

ゲームの操作的には「画面上のボタンを押している間だけカメラが移動する」ように制作しますが、Unity標準のButtonコンポーネントにはボタンが押されたままの状態を検知する機能がありませんのでButtonではない方法を使用します。

 

まずは左方向に移動するボタンとしてImage UIオブジェクト「CameraButton_Left」をCanvas以下に追加します。

[Source Image]には同名の画像素材(CameraButton_Left)を指定し、画面の左上付近に配置しましょう(AnchorsとPivotの値も変わっていることに注意)。

そしてこのオブジェクトをコピー&ペーストし、右移動用のボタンとしてCameraButton_Rightを配置します。こちらの画像素材は同じものを使用し、オブジェクトを左右反転させることで右向きの矢印として見せます。

ボタンが押されている間カメラが移動するスクリプト

以上の画像UIがタップされている間だけ実行される移動処理を先に用意しておきます。

カメラオブジェクトを制御するための新クラスCameraControllerを作成しましょう。

UIは「タップされている間」を直接検知することは出来ませんが、「タップされた瞬間」と「タップした手が離れた瞬間」にそれぞれ処理を呼び出せるので2つのpublicメソッド(移動の開始と終了)を用意しています。

それではメソッド呼び出しのためにオブジェクト側の設定を変更します。まずはMain Cameraオブジェクトに今作成したスクリプトをアタッチしましょう。

続いてボタンUIのCameraButton_Leftを選択し、Event Triggerコンポーネントを追加しましょう。

このコンポーネントによって「タップの開始(Pointer Down)」「タップの終了(Pointer Up)」というタイミングをイベントとして処理し、先ほどのメソッドを呼び出せるようになります。

まずはタップされた時にCameraRotate_Startメソッドを呼び出す設定をします。[Add New Event Type]をクリックしてPointer Downを選択します。

新しい枠が追加されるので、右下の+ボタンを押してメソッドの指定を行いましょう。以下のように設定できればOKです。

これでこの画像がタップされた瞬間にカメラが左移動を開始するようになりました。続いて移動停止メソッドを呼び出す設定も行います。

[Add New Event Type]を再度クリックし、Pointer UPを選択します。こちらではCameraRotate_Endメソッドを指定しましょう。

これにて左方向へのカメラ移動が実装できました。右移動UI(CameraButton_Right)にもほぼ同じ設定を行うため、以下の手順でコンポーネントのコピー&ペーストを行いましょう。

左移動UI側のEvent Triggerコンポーネントの右上「…」ボタンをクリックし、[Copy Component]を選択します。その後右移動UI側の任意のコンポーネントで同じボタンをクリックし、[Paste Component As New]を選択すれば複製完了です。

こちらのボタンが押された場合には移動方向を反転させるため、引数で用意していた右向きフラグ(rightMode)をtrueにさせます。

これでカメラの移動操作が行えるようになりました。

(任意)ピンチイン・ピンチアウト操作の実装

スマートフォン上でのピンチイン・ピンチアウト操作をゲーム内カメラにも反映させる事が可能です。

以下の新クラスCameraZoomはその処理の一例となります。

  • UnityのInputの機能ではマルチタッチ(複数の指での同時タッチ)も扱うことができます。Touch型には様々な情報が入っているのでこれをもとにピンチイン・ピンチアウトの操作を検出します。

このクラスをMain CameraオブジェクトにアタッチすればOKです。動作確認には実機へのビルドが必要になります。

属性間の相性を設定する

これまでキャラクター側にそれぞれ属性(水・火・風・土)を設定して表示してきましたが、ゲームには特に影響を与えず見た目だけの設定となっていました。

ここで属性間の相性を設定し、戦闘ダメージに影響を与えるように変更していきましょう。

相性についてはそれぞれ以下のように定義します。

  • 水属性:火に強く土に弱い
  • 火属性:風に強く水に弱い
  • 風属性:土に強く火に弱い
  • 土属性:水に強く風に弱い

それぞれ相性が良い相手には戦闘ダメージが1.2倍、苦手な相手には0.8倍とした時、以下のようなメソッドで適切なダメージ倍率を取得できるようになります。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.stores.jp/)で講座閲覧権を取得してね。

まとめ

追加機能が多くなってきたので一旦ここでまとめます。

  • Event Triggerを設定することでタッチ操作に関する処理を幅広く実装しました。
  • 戦闘式に場合分け処理を組み込むことで属性攻撃システムを実装しました。
  • Audio SourceコンポーネントやDo.Tweenを使用することでBGMやSEを自由に再生可能。

次回はキャラクターの移動範囲パターンの拡張とコマンドを途中キャンセルする処理を実装します。

次の記事:

UnityタクティクスSRPGプログラミング講座13 移動パターンを複数化・行動キャンセル処理を開発
この講座はUnityとC#で作るドット絵タクティクス戦略シミュレーションRPG開発講座の第13回です。 前回の記事でSRPGの状況把握が行いやすくなるスマホ対応カメラ回転移動処理や属性攻撃・BGMとSEの開発を行いました。 前回の記事:...

Unity SRPG(戦略シミュレーションゲーム)プログラミング講座に戻る>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き


【Line登録者限定のプレゼントもあるよ!】

コメント

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