質問: ### 前提・実現したいこと ビリヤードゲームで、球同士の衝突で球が台から飛び出るのを防ぐ。(台の穴には入るようにする) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/8339e48496d6eb19fed6ccd597d8d2a4.png) ### 試したこと ![![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/fe4152fe6b101d2c5d488f51443b909c.png)](63a4c2bc5aca17e7ed91990dde7e6e4c.png)
回答: OnTriggerStayの代わりに、OnTriggerEnterとOnTriggerExitの組み合わせはもう試されたでしょうか? 穴の領域に侵入したタイミング(OnTriggerEnter時)で`rb.constraints = RigidbodyConstraints.None;`、脱出したタイミング(OnTriggerExit時)で`rb.constraints = RigidbodyConstraints.FreezePositionY;`とすればうまくいきそうな気がします。 さらに、Y座標の再固定を行った際には、Y座標を適切な位置に強制的に移動させた方がいいように思います (もし穴領域の中で球が上に跳ねて、そのまま穴領域の外に出た場合、宙に浮いたままになってしまうかもしれません)。 別の案として、球のコンストレイントを切り替えるのではなく、球が跳ねても台の外に飛び出さないように台のふちのコライダーを縦に長く拡大するのもいいんじゃないでしょうか。コライダーだけを大きくすれば、ビリヤード台の見た目は変えないまま、ボールがふちを飛び越えるような軌道をとっても見えない壁に跳ね返されてくれるかと思いますが、いかがでしょう。