I understand why this happens and the solution with ray tracing makes complete sense. However I’m new to Unity and I really think there’s got to be a simpler way for me. Reason being my scenario.
I have a ball of 1x1x1 scale and it’s being thrown at a box of 0.5x20x20 (from the x side) at a velocity of ~7000. While that’s fast, it’s not bullet fast.
I’ve tried continuous and continuous dynamic with the ball and both seem to work the same. The ball passes through ever 1/7 times. I even tried adding a rigid body to my “wall” with position locking and it just slowed down the performance while not really adding any benefit.
What should I do?
The problem is really due to the velocity of the object. The physics engine simple doesn’t have enough time to register the collision. Using “continuous” and “continuous dynamic” can help but a velocity of 7000 m/s will need some help.
An alternative to raycasting method is to have a thicker mesh for the ball more time to collide.
Consider that if an object is moving at 7000 m/s at a frame-rate of 60 FPS then the ball would move 166 meters each frame. The engine “puts” the ball at those increments and calculates the appropriate collisions at that point. The raycasting method would be needed to finded what, if anything, would have been collided with in between those points.