[GameDev]キャラ動かすまで その4.5(移動の移植とリファクタリング)

ということで進捗。[WebGL版]

 

マウス移動

2Dから2.5Dへの地味~な移植。
マウスクリック時の座標と、現在のマウス座標の差分をベクトルに変換、
角度によって与える速度を分岐…みたいな感じ。
数学苦手なんでちょうggる

上下左右移動のときに、ナナメ移動より早く移動できてしまう問題、
ナナメの判定がちょっと甘め(上下左右に移動するつもりでもナナメに反応しがち)な問題をついでに潰しておく。

クリックアンドホールドは別の動きに使いたいからぷにコン方式だけど、
NavMesh使えるなら、MMOでよくある移動形式のほうが良かったかな…。

階段と壁

段差が0.5Heightは乗り越えできるように。1Heightは壁扱い。
特にスクリプト組むこともなく、NavMeshの設定で解決。
橋構造のソーティングも問題なさげ。

…もっと早く課金しとけばよかった…。

 


以下、実装メモ。

通り抜けができたりできなかったりするタイル

ナビゲーションのエリア設定をした上で、エージェントのエリアマスク設定をすればよさげ。
応用して、NPCとかのランダム移動範囲とかもこれで作れそう。

精霊アクション

発動時に各精霊固有のRayを飛ばす。
受け側のタイルなりオブジェクトなりに、
・接触
・クリック
・各精霊
の反応を設定するスクリプトをアタッチする。
Rayに当たったオブジェクトの反応を拾ってきて、イベント実行する感じ。

通常

前方にRayを飛ばす。反応に設定されたイベントを実行。

ジン

地面にRayを飛ばす。
NavMeshAgentの移動を切って、反応に設定された座標へTweenでジャンプ、完了後移動再開。

カワズ

前方の地面にRayを飛ばす。
ジンと同様の処理をしたのち、エリアマスクの設定から水を通れるようにする。
上陸の処理はどうするか…。
境界線の地面の接触反応にエリアマスクの設定(水通行解除)を入れるとかか。