Unityで地面に沿って移動する|TerrainやNavmesh不使用

キャラクターを地面に沿って移動させたいことが多々ある。皆さんはどのように実装しているのだろうか?Terrainの場合は、便利なSampleHeightという関数があったり、Navmeshを使えば簡単に実装できたりするが、それらを使いたくないときもある(ちょっと重いから)。この記事では、Blenderなどで凸凹な地面を作った場合、Tilemapを使わずに2Dアクションなどを作っている場合に地面に沿ってキャラクターを移動させる簡単なコードをご紹介する。

Unityで地面に沿ってプレイヤーを移動させるサンプルコード

以下のコードを、Update内に記述する。

解説

プレイヤーの足などから少し上空(Y軸プラス方向)へオフセットした地点から地面方向(Y軸マイナス方向)へRayを飛ばして、Rayの当たった地点との相対距離を求める。オフセットする位置は地面を登る高さよりも高く、登りたくない地面よりも低く設定する。Rayを飛ばす距離は、地面を降りる高さよりも長く、降りたくない地面よりも短く設定する。

リンク

共有する

このエントリーをはてなブックマークに追加

コメントをする

メールアドレスが公開されることはありません。
*のついている項目は必須です。


*