正直なところ移動させるならエディタ側で組んだ方がいいよねって感じですが、 移動はゲームの基本でもあるのでそれをスクリプトで組めるようになりましょうという挑戦です。
今回はコードを書かずに座学的な感じになります。
プログラミングの知識(変数やクラスの概念)がある程度ないとついていくのは難しい内容になっているので注意してください。
プレイヤーをスクリプトで移動させるためにはマップシーンのプレイヤーを参照する必要があります。
まず基本的に現在いるエリアの「mapScene」という変数がベースとなるのでそこから取得していきます。
BakinObjectを継承したクラスであれば公開変数であるMapScene形のmapScene変数を扱うことができます。
MapSceneはYukar.Engine.SceneBaseを継承したクラス。
内容としては「メニューを含むマップ移動中の処理全般を管理するクラス」となっています。
MapSceneクラスにはGetHeroという関数があるが、mapSceneは公開変数としてMapCharacter型のhero変数を持っています。
heroはGetHeroをした結果のものが入っているのでとくにGetHeroをする必要は今のところないです。
簡単に言うとmapScene.heroとするとマップ上のキャラクターに対して処理が可能になります。
hero変数はMapCharacterクラスなのでその関連のメソッドを使えます。
MapCharacterクラスはキャラクターの移動やらいろいろな処理を持っています。
試しに「mapScene.hero.getDirectionDigital()」でプレイヤーが向いてる方向を取得できるか試してみたら、問題なく取得できました。
上記の関数で取得できるのは以下のようになってます。
これを利用すれば向かわせたい方向に進めることができそうですね。
プレイヤーを移動させる処理は大体3パターンあります。(ような感じがする)
こちらは指定した座標に瞬時に移動させたいときとかに使用します。
ループ処理して動かすように作られていないので、気を付けましょう。
これが結構曲者で、例えば与えた「0.2f」と力を加えるとその力でキャラが移動していく感じです。
瞬間移動と違って毎フレーム実行させる必要があるので、ループ処理で使うのがメインです。
この関数については結構狙った位置に移動させるのは難しく感じました。
2Dゲーム的な移動としてはコチラのほうが使いやすい感じでした。
後に紹介するグリッド移動なんかはコチラの処理を使ったほうが理想の動きを再現できたので、 個人的にはこの指定の位置まで指定した値で移動させる処理を使います。
次回は実際に移動処理のサンプルコードを組んでみましょう。