この記事は戦略シミュレーションRPGのプログラミング入門講座の第7回目です。
前回に引き続きキャラクターの移動操作を実装していきます。前回はSRPGにおいて必須となる移動させたいキャラクターとマップのマスの紐づけを行い、実際にキャラクタを指定したマスまで移動させる処理を実装しました。
前回の記事:
今回の記事ではキャラクターの移動範囲という概念を作成します。キャラごとに移動範囲を設定することで個性を持たせたり、シミュレーションRPGにおける戦略の幅を出していくことができます。
今回は将棋の飛車、チェスのルークの駒のような縦横好きなマスだけ進める移動パターンを実際に作っていきます(その後、移動パターンを増やします)。
それでは、第7回講座、始めていきましょう。
キャラクターの移動範囲を設定する
この回でのキャラクターの移動範囲は「上下左右に行き止まりまで」と制限します。(他のパターンは講座の後半に実装します)
まずはこの「移動範囲をタップした場合のみキャラクターが移動する」という形を作ります。
ブロックの通行可能設定
現在マップを構成するブロックは草と水場の2種類があります。
草ブロックは通行可能とし、水場ブロックは行き止まりとする為ブロックデータに変数を追加します。
MapBlock.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MapBlock : MonoBehaviour { // 強調表示オブジェクト private GameObject selectionBlockObj; // ブロックデータ [HideInInspector] // インスペクタ上で非表示にする属性 public int xPos; // X方向の位置 [HideInInspector] public int zPos; // Z方向の位置 [Header ("通行可能フラグ(trueなら通行可能である)")] public bool passable; // 通行可能フラグ (省略)void Start () (省略)public void SetSelectionMode (bool mode) } |
追加したbool変数passableが通行可能フラグとなっており、オン(true)のブロックは通行可、オフ(false)の場合は通行不可とします。
それではプレハブ側のInspectorからフラグをセットしましょう。
草ブロックプレハブ(Block_Grass)のpassableパラメータにチェックを入れてオン(true)状態にします。
水場ブロックは通行不可の為パラメータの設定はオフ(false)のままです。
指定地点から移動できる範囲をリスト化する
通過可能なブロックが識別できるようになったので、マップマネージャ側に「指定地点から到達可能なブロックを全て調べる」メソッドを実装していきます。
まとめ
これでキャラクターの移動範囲が視覚化されてプレイヤーにも分かるようになりました。
- 列挙型は特定の意味を持った定数をまとめて定義して扱える型です。
- リストは中身の追加や削除が可能な配列というイメージです。Addメソッドで追加し、Containsメソッドで指定した要素を中身に含むかチェックできます。
- 配列やリストの中身には順番に0からの番号(インデックス)が存在し、特定の中身を参照する時にはその番号を指定します。
次回はGUIの実装など、よりゲーム的な部分を拡張していきます。
次の記事:
コメント