【Unity】CharacterControllerで当たり判定ができないときの対処法




 

CharacterControllerで当たり判定ができない時の対処法に気づいたのでメモ。

 

 

で、結論からいうと、上手くいかなかったらCollider & Rigid

という正攻法で行った方がいいということ!

 

ここではプレイヤーが敵に当たること前提で進めていきます。

まずは、当たり判定をさせるための設定から。

 

【プレイヤー】

 

【敵】

 

お互いにコライダーを付け、どちらか一方にRigidbodyを付けます。

 

が。

 

敵に当たると上に飛んで行ってしまいましたね。。

どうやらCharacterControllerとRigidは相性が悪いようです。

 

現役エンジニア曰く、Character ControllerはRigidbodyを使用しない前提なので、それを強引に使うと挙動が安定しないらしい。。

 

こちらのリファレンスにも載ってました

 

では敵に付いていたIskinematicを外してしみましょう。

 

そしたらなんとか上に飛ばされずに当たり判定をしてくれました。

が、

外からの力がかされているので動きがぎこちないです。

 

で、次にやったのが

CharaceterControllerを両方に付けてどちらか一方にRigidを付ける方法。

こちらはお互いすり抜けてしまう結果になってしまいました。

 

だからもう結局落ち着いたのがこれです。

 

【プレイヤー】

【敵】

そう、普通のコライダー同士で当たり判定させました。

 

そしたらすり抜けることも飛び跳ねる事もなく、ちゃんと当たり判定ができてます。

まとめ

CharacterController + Rigid

は相性が悪いから

 

普通のコライダーとRigidで対処しちゃいましょう。

 

僕はこれだけで6時間奮闘してたので。。

それでは。

 

 

 

 










コメントを残す

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