- Home /
Unresponsive collier at small objects and high speeds
I have observed while making a game that as the ball hits the bat, it is not detected by the collider, specially when it is traveling at a high speed. The ball goes right through the bat. It can be fixed by increasing the size of the collider, but it is not an option since it gives unrealistic effects, ball bouncing off from far away from the bat.
Also as the bat is controlled directly from the mouse (mouse axes value used in transform.Translate), the collision detection doesn't include this motion of the bat, and doesn't add to the speed of the ball, it actually slows it down and sends the ball in the wrong direction (i have checked, the ball somehow goes through the bat and hits the rear side of the bat).
I can fix it through a complicated script that involves calculating the angle of incidence and then working out the angle at which the velocity is applied. Is there a better way of doing this? And how can the problem with detection of small fast moving objects be solved?
Answer by roamcel · Aug 12, 2011 at 04:54 AM
What you're experiencing is a probably consequence of the physics engine sampling frequency. From the top of my head the only solution I can think of is decreasing the timestep (time) and the collision penalty (physics) under edit=> project settings, so that the physics system is more responsive to collisions in general. To verify if this is indeed the problem, before tampering with the parameters, reduce the TIMESCALE (to make the game move in slow motion).
As a side note, what you probably want, however, is to use TWO colliders for the bat and the ball. This way, you can use the outer ones as TRIGGERS (and you can set them to be big as you want), to predict the collisions and actually project the ball on the bat the instant this is supposed to happen (you sure have some serious math issues here to solve - but after all, it's what you're after if you want to make a realistic hit-miss ball scene!)