はじめに
前回は、スクリプトの作成とアタッチを行いました。
今回は、その移動処理についてざっくりと解説していきます。
解説
全体の流れ
基本的には以下のような処理が行われています。
・十字キー入力を検知し、移動先のマスの情報を調べる
・移動先に障害物がある場合、移動しない
・移動先が別チャンクの場合、チャンク切り替え処理を行う
・特に何もない場合は、移動させる
Player.cs
このスクリプトでは、プレイヤーの移動に関する処理のうち一部が書かれています。
基本的に、書かれているのは移動処理用の変数や関数の定義です。移動処理のうちの大部分はPlayer.csではなくSceneManager.csで行われています。
SceneManager.cs
このスクリプトでは、移動処理の中枢となるコードが書かれています。
ゲームが始まるとまず、初期チャンクとプレイヤーの配置が行われます。
その後、MovePlayerというコルーチンが開始されます。
このコルーチンが、移動処理の本体です。
流れを説明しましょう。
十字キー入力を検知すると、移動先の座標の計算が行われます。
ここでもし移動先の座標が同じチャンク内、かつ障害物が無い場合は、プレイヤーを移動させます。
移動先の座標がチャンクサイズを超えている場合、チャンク切り替え処理に入ります。
チャンク切り替え処理では、以下の作業が行われます。
・移動先のチャンクを取得
・取得したチャンクを中心に、隣接チャンクを並び替える
・プレイヤーを適切な座標に移動させる
この処理が完了することで、プレイヤーの移動がなされます。
MapChunk.cs
このスクリプトでは、主に隣接チャンクを管理しています。
後はチャンク切り替えの際に使われる関数が定義されています。
おわり
今回は、ざっくりとですがスクリプトの解説を行いました。
次回は、プレイヤーのステータスを管理するシステムを作成します。