のにっき

【Unity】PyasicMaterial使用時、オブジェクトが跳ね返らないときの対処法

UnityでPyasicMaterialを使用してオブジェクトに跳ね返りの設定を行ったとき、
思ったように跳ね返らなかった場合の対処法をまとめます。
※弱い力で衝突した時に跳ね返らなくて悩んでる人は対策③必見!

対策①:PyasicMaterial(2D)の設定を確認

そもそも跳ねない。跳ね方がおかしい時に確認
・Bounciness
0だと跳ねない。1だと力が減らずに跳ねる。無限に跳ねさせるなら1に設定する
Bounce Combine: ※3Dのみ
Maximumに設定すると力が減らずに跳ねる。

対策②:Rigidbody(2D)の設定を確認

オブジェクトが壁をすり抜けるときに確認
・Collision Detection
デフォルトは「Discrete」。壁をすり抜けるバグが発生してなかったらこのままでOK!
壁抜けが発生している場合は「Continuous」を設定する

対策③:Project Settings → Physics(2D)の設定を確認

オブジェクトが壁に埋まる。うまく跳ね返らなかったりするときに確認
3DならBounce Threshold、2DならVelocity Threshold
跳ね返りのしきい値
簡単に言うと、設定値より低い力でぶつかったら跳ね返らないようにする。
上手く跳ね返らないときは0を設定する。