Turn Based Strategy Frameworkの用語・単語集
本稿は筆者がTurn Based Strategy Framework(TBSF)を調べる中で気がついたことや、意味を調べたものなどをメモ帳のように使う記事になっています。もし、TBSFを使う中で分からない単語などがあればこちらも参考にしていただければ幸いです。
※本稿、または本シリーズはTBSFの開発者、Crooked Head様から許可を得て一部のコードやドキュメントを引用・転載しています。
スクリプト関連の知識まとめ
IsTaken フィールド
作成したセルにSqaureから継承したスクリプトをアタッチすることになります。チュートリアルを例に出すとSampleSquareがそれです。そのスクリプトをアタッチした際にいくつかのPublic変数も継承されており、その中にIsTakenがあります。
Saureの基底クラスである、Cell.csというスクリプトが本フレームワークにはあります。そこで、IsTakenのコメントを確認してみると「誰かがこのセルを占領しているかどうかを表します」と書かれています。
つまり障害物や他のユニットがその場所にいるとIsTakenはTrueであるべきという考えのもとに用意された変数です。
そのため、自身で用意した障害物セルをGrid Helperで配置する際、事前にIsTakenをTrueにする必要がありますね。
ちなみに、Unit(基底クラス)には移動した先のセルにアクセスし、そのセルのIsTakenをTrueにするというコードも書かれていますので、基本的にはこちら側で改修する必要はなさそうです(その挙動が希望通りであれば)。
CellSpriteHighlighter
このスクリプトは基底クラスにCellHilighter.csを持ちます。セルにマウスカーソルが乗ったときや選択した時などに色を変えたりすることに用いるシンプルなものです。
フレームワーク内のExample4では格セルのPrefabにアタッチされており、AdvWrsSqaure(Saureスクリプトを継承)に参照されています。Exampleを読み解く際に知っておくと混乱せずに済むでしょう。
Move、OnMoveFinish
Knight(あるいは他のユニットや障害物)にアタッチされているスクリプト、AdvWrsUnitに注目してみます。
AdvWrsUnit内のコードにあるようにユニットを移動させた際に、いくつかのSpriteのSortingOrderが10プラスしています。そして、移動を終えた際に10マイナスされ元通りになります。
public override IEnumerator Move(Cell destinationCell, IList<Cell> path)
{
GetComponent<SpriteRenderer>().sortingOrder += 10;
transform.Find("Marker").GetComponent<SpriteRenderer>().sortingOrder += 10;
transform.Find("Mask").GetComponent<SpriteRenderer>().sortingOrder += 10;
yield return base.Move(destinationCell, path);
}
protected override void OnMoveFinished()
{
GetComponent<SpriteRenderer>().sortingOrder -= 10;
transform.Find("Marker").GetComponent<SpriteRenderer>().sortingOrder -= 10;
transform.Find("Mask").GetComponent<SpriteRenderer>().sortingOrder -= 10;
base.OnMoveFinished();
}
これは移動中のスプライトの表示順を前にするために必要な処理となっています。例えばExample4で味方ユニットを重なって通り過ぎる際に必ず移動しているユニットの方が前面に表示されます。そして、移動が終了すると元のSortingOrderになります。こうした処理が入ることでどのユニットが動いているか一目瞭然です。
オブジェクトの構成関連
Cell(セル)の作り方
ゲームを作る際に、チュートリアル通りにまずはセルを作ることから始めて良いように思います。
四角形のセルならSquareを継承。六角形のセルならHexagonを継承しましょう。チュートリアル解説でも記述しましたが、Grid Helperで作るセルは単なるマップではなく、ゲームに必要な機能を用意してくれるものです。
ユニットについているMaskやKnightの表示順について
Example4のKnightといったユニットのオブジェクトにはいくつかの子オブジェクトがあります。その中にあるMaskというものに注目してみましょう。
このオブジェクトは親オブジェクトのKnightと同様のSpriteを持っています。
では一体なぜ、同じようなSpriteを持たせているのでしょうか。
それは敵味方で色分けをするためです。つまり、元となるグラフィックは同じなのですが、その上にマスクを被せて色をつけることで敵味方を変えているのです。
ちなみに、City(町)をCaptureして占領する場合、占領した側ユニットのMaskの色を参照して、Cityの色も変えています。それによって、どちらのプレイヤーが占領したか分かるようにしています。
この記事が気に入ったらサポートをしてみませんか?