SRPGの作り方4 3Dマス目マップで2Dドット絵キャラを表示させ移動システムを構築する

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


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

今回の記事はシミュレーションRPGの作り方講座の第4回です。

前回記事では移動可能な草原フィールドと移動不可能な水辺フィールドを構築し、ランダム生成するスクリプトを作成しました。

前回の記事:

SRPGの作り方3 移動可能・不可能エリアとマップの自動生成システムを実装
この記事はシミュレーションRPGの作り方講座の第三回です。 前回の記事では、シミュレーションRPGのフィールドになる足場ブロックと移動不可能な水辺ブロックを作成しました。マテリアルやシェーダーの設定も無事完了です。 前回の記事: ...

今回はキャラクターオブジェクトを作成してマップに配置していきます。

また、2Dスプライトを常に正面に向けさせる処理(ビルボード)についても学んでいきます。

今回の講座のちょっとした目玉として、3DのSRPGフィールドに対して、キャラクターなどは2Dで表現する部分を実装していきます。

3D空間を活かしたゲームを作りたい!でも2Dで描いたキャラクターを使いたい!そんな方には必見です。


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

キャラクターオブジェクトの作成

今回作成するゲームのキャラクターは3Dモデルではなく2Dのイラストを使用する為Mesh Rendererのような3D用コンポーネントは使いません。

まずは空のオブジェクトを作成します。プレハブ化するので、オブジェクト名はシンプルに「Character」とします。

そして2D画像を表示させる為に必要となるコンポーネントのSprite Rendererを取り付けます。

Inspectorビューの[Add Component]ボタンをクリックし、[Rendering]→[Sprite Renderer]と選択するか検索して追加してください。

このコンポーネントは2Dゲームで画像を表示させる時に用いられますが、3Dのシーンでも問題なく使用可能です。

コンポーネントの設定で[Sprite]のパラメータにて表示させる画像を選択します。試しにActor_01の画像を選択してみましょう。(操作はいつものようにドラッグアンドドロップか右側のボタンから可能です。)

シーン内にキャラクター画像が表示されたのが確認できると思います。

キャラクター処理スクリプトをアタッチしてプレハブ化する

前述の通り、他のキャラクターを配置する際もこのオブジェクトを元にするためプレハブ化を行っておきます。

その前にこのキャラクターオブジェクトのデータや処理を実装する為のスクリプト[Character]を作成してアタッチしておきましょう。

そしてプレハブ化を行います。

スクリプトの作成やアタッチはプレハブ化の後でも大丈夫ですが、その際はProjectビュー内のプレハブ側を選択した状態で行ってください。インスタンス側を編集してもプレハブ側に変化はありません。

キャラクターの初期位置を決定する

キャラクターをひとり表示させる事はできましたが、この状態で実行してもマップの中央に埋まっている状態にしかなりません。

Transformのposition値を手動で入力すれば位置を変える事はできますが、1ブロックの大きさを後から変更するなどがあった場合全て計算して修正しなくてはいけません。

これからキャラクターごとに「横方向・縦方向にそれぞれ何番目のブロックの位置でスタートするか」を指定できるようにします。

まずは先ほど作成したCharacterスクリプトを編集して初期位置をInspectorから入力できる状態をつくります。

  • [Header]属性を変数に付ける事によってInspectorから見た時に””内のコメントを表示する事ができます。動作には影響ありませんが編集時に分かりやすくなります。
  • Vector3変数posを宣言してその中に計算した座標を格納し、Transformのposition値に変数posをセットする事で座標が変わります。(1ブロックの大きさが変わる時はこの計算を変更すればOKです)

マップは横方向と縦方向に広がっており、ここではそれぞれをX方向・Z方向としています。

初期位置を入力してみる

Inspectorからキャラクターオブジェクトのマップ内位置を入力できるようになりました。まずは適当な位置を入力して確認してみましょう。

以下は各ブロックの位置を(X方向, Z方向)で書き方でまとめた表です。

↑カメラから見て奥↑

↓カメラから見て手前↓

例えば位置をXに-4、Zに-4としてゲームを開始すればカメラ手前側の一番左にキャラクターが移動するはずです。

キャラクターを複数用意して配置する

キャラクターの位置まで指定できるようになったので、ゲームに登場する全てのキャラクターオブジェクトをプレハブから用意して並べていきましょう。サンプルでは味方が3体ずつ、敵が3体ずつとなっていますが数の変更は可能です。

最初に空のオブジェクトとして「Characters」を作成します。シーン内に存在する全てのキャラクターオブジェクトオブジェクトはこのオブジェクトの子になるようにします。

シーン内へのプレハブのインスタンスの作成、およびオブジェクト間の親子関係の設定はいずれもドラッグアンドドロップで行えます。

なお、インスタンス側のオブジェクト名は分かりやすいように変更しても大丈夫です。

オブジェクトが用意できたらそれぞれの画像(Sprite)および初期位置を設定していきます。

続きを読む

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

まとめ

ここまででキャラクターの配置と表示が完了しました。

  • 2D画像(スプライト)を表示する時はSprite Rendererコンポーネントを使用できます。
  • Headerなど変数に属性を付けるとInspectorから値を編集する時に分かりやすくなります。
  • transform.LookAtメソッドにVector3座標を渡せばオブジェクトがその座標を向いてくれます。

このキャラクターを動かせるようにしたいところですが、そのために次回はマップ上のブロックを選択できるようにする処理を実装します。

次の記事:

SRPGの作り方5 シミュレーションゲームの移動先マップの取得と強調表示処理の実装
今回の記事は戦略シミュレーションRPGの作り方を解説する講座の第5回目です。 前回までで自動生成される3Dフィールドマップ上で2Dキャラクターを表示させるシステムを構築しました。 前回の記事: 実際に表示されているキャラクター移動...

Unity SRPG(戦略シミュレーションゲーム)の作り方講座に戻る>>



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


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

コメント

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