今回は、キャラクターをマップ内で歩かせてみます。
以下が完成イメージです。 ややぎこちないですが、リアルタイムバトルをやるわけでもないので、よしとします。
通行状態とプレイヤーの位置を設定するために、マップデータにレイヤーを追加しています。
o
は通行可で何もしません。x
は通行不可なので、phsyicsBodyを設定したSKNodeを配置します。
p
がプレイヤーの場所でphysicsBodyを指定したNodeを配置します。-
は何もなしです。
以下がその部分のコード抜粋です。
なお、今回から、マップの処理をSJMapNodeという専用クラスに任せるように変更しています。 上のコードもSJMapNode内のものです。
プレイヤーは新たに追加したSJCharacterNodeを使っています。 アニメーションはチュートリアルのサンプルゲームとほぼ同じロジックなので、ここでは移動の処理を抜粋します。
といっても、特に特別なことはやっておらす、画面がタップされたら、x軸・y軸の順でその方向を向いて歩いていくだけです。移動はタイルサイズ(32px)の単位で行なうにしています。
アニメーションはもちろんSKActionを利用。
また、物理エンジンの衝突を利用することで、通行状態を考慮する必要がく、コードがシンプルになっています。1
これでキャラクターが歩けるようになりました。
ソースコードは、sj-prototype-apps/SJRolePlaying at master · tnantoka/sj-prototype-appsです。
まだまだ続きます。
physicsBodyを設定した物体同士はデフォルトで衝突するため、プレイヤーはx
のマスに移動できない。 ↩