Unity オブジェクトの上部・側面で判定を別にしたい
オブジェクトの上部・側面で判定を別にしたい
調べても求める答えが見つからなかったので質問させていただきます。
現在、授業の一環として、タイルマップを用いて2D横スクロールアクションを制作しているのですが、そのゲームに
1.プレイヤーの左右方向に何かブロックが触れた時、プレイヤーの移動速度が0になる
2.プレイヤーの足元にブロックがある場合、ジャンプできる
という仕様があります。
そのため、1ブロックの側面部分は壁として判定、上部は床として判定したいと思っています。
この場合、以下のどの方法で実装するのが効率や安全性の面で良いのでしょうか?
思いついた実装手段
1.プレイヤーの子オブジェクトに床・右側の壁・左側の壁との衝突判定を取るColliderを計3つ付け、プレイヤー本体がその判定結果を受け取って処理を行う
2.タイルの子オブジェクトに上部、側面で別のTagが付いたColliderを付け、プレイヤーはTagに応じて処理を行う
3.プレイヤーから上部左右の3方向にRayを飛ばして、Rayの衝突判定を貰って処理を行う
4.プレイヤーとオブジェクトが衝突した位置をContactPoint2Dを用いて取得し、その座標に応じて処理を行う
他により良い手段があれば、教えていただきたいです。