ホーリーのプログラミング日記

ホーリーのプログラミング日記

エキセントリック・スーパーアプリクリエイター / アプリ総DL数 約180万 / 全然分からない 俺は雰囲気でアプリを作ってる / iOS : apple.co/3m3HxSm / Android : bit.ly/3ma0liZ

ジャンプアクションゲームでLinecastを使わずに着地判定を取る

 

完全に自分用のメモです。

 

ジャンプがあるアクションゲームで、着地判定を取るときにはLinecastを使ってるんですよ。Unityの寺子屋に載ってたので、それをそのまま使わせていただいてます。

んで、これでも全然問題ないんですが、他の方法があることも知ったので、ちょっとメモをば。

 

こちらの記事ですね。あの有名なテラシュールブログさん。

【Unity】Raycastを使わず地面に接触しているか判定する - テラシュールブログ

 

よく言われているアプローチは、地面に向けてRaycastやCircleCastを飛ばすアプローチです。これは大抵の場合は問題ないですが、実は少しだけ面倒くさい所があります。

問題は三つ。

  • Rayの長さ調整が面倒くさい
  • 離れても反応することがある
  • 自身のColliderと接触しないようにLayerを分けないといけない

1と2は実際には長さに関する問題で、Rayの長さ判定が短すぎると接触判定にならず、同様に長過ぎるとジャンプ開始しても地面に接触中の扱いを受けることがあります。
またRayを発射したときに自身のColliderに反応する事があるので、キャラクターのColliderを分けて接触判定を行う必要が結構あります。そうなってくると、段々と管理が面倒になってきます。

 

最後に書いてあるここですね。これ思い当たることがあるので、紹介されてるやり方も試そうと思いました。