SRPGの作り方6 キャラ移動とシミュレーションゲームのターン進行システムを連動させる

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


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

この講座はシミュレーションRPGの作り方について説明しています。今回はその第6回目になります。

前回はSRPGに必須のマップ上の移動用ブロックのマス表示処理やあるマスを選択した状態で別のマスを選択すると元々選択していたマスを非表示にする処理を実装しました。

前回の記事:

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

マップのブロックを選択できるようになったので、今回はこれを発展させて選択地点のキャラクターを取得して移動させる処理までを実装していきましょう。


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

選択地点のキャラクターを取得する

ブロックをタップで選択した時に、そのブロックと同じ位置にいるキャラクターのデータ(Characterクラス)を取得する処理がまず必要になります。

これを可能にする為にブロックのデータ(MapBlockクラス)内にそのブロックの位置情報を保存させるようにしましょう。(しなくてもTransformの座標から計算可能ですが、こうした方が容易になります。)

MapBlock.cs内 メンバ変数追加
  • [HideInInspector]属性を付与するとpublicな変数でもInspectorからの編集が不可になります。
MapManager.cs内 Start

ブロック生成時にそのブロックデータに位置情報を記録するようにします。これはCharacterが持っている位置情報と同じ種類です。

キャラクターに現在位置データを持たせる

次はキャラクター側のスクリプトを編集していきます。

移動処理の実装に先んじて、移動を行った後のキャラクターの位置データを保存する為の変数を用意しておきます。

続きを読む

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

まだゲーム部分での変化は分かりにくいですが、キャラクター選択後に他のブロックが選択できなくなっているのでちゃんとモードが進行している事が分かります。

タップ地点にキャラクターを移動させる

準備が整いましたので、まずはキャラクターの移動操作を簡易的に実装していきます。Characterクラスに移動処理を作成しましょう。

Character内 新規メソッド
  • 現在の位置から移動先位置への相対座標を計算してtransform.positionに加算しています。

このMovePositionメソッドをGameManagerから呼び出します。

GameManager.cs内 SelectBlockメソッド

まとめ

これによって選択したキャラクターが移動するようになりました。

しかし、現在の仕様ではマップ内のどのブロックに対しても制限なく移動できてしまいます。シミュレーションRPGとしては移動範囲の制限が必要になりますので次回はその要素を実装しましょう。

次の記事:

戦略シミュレーションSRPGの作り方7 駒の移動範囲を自由に設定する
この記事は戦略シミュレーションRPGのプログラミング入門講座の第7回目です。 前回に引き続きキャラクターの移動操作を実装していきます。前回はSRPGにおいて必須となる移動させたいキャラクターとマップのマスの紐づけを行い、実際にキャラクタを...

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



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


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

コメント

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