Ball Physics a bit over the top.

Hey!

Long story short, I’m trying to create a realistically behaving golf ball for a VR project.

Initially, I struggled to detect collisions between the ball and the fast-moving club. I eventually solved this by casting object traces and checking for collisions.

I’ve managed to gather all the necessary information to apply an impulse to the ball. The impulse and direction are calculated by multiplying the club’s speed by the ball’s mass, and then dividing that value by 3 (this adjustment feels better in VR).

Here’s the logic I’m using:

The ball’s logic:

I currently have a physical material applied only to the ball. I initially had different physical materials on the floor and walls, but I decided to focus solely on improving the ball’s physics first. So, I removed any physical material from everything else.

Here’s how the physical material looks:

The issue I’m facing is that while the ball gains the impulse and rotates correctly based on the impact location, it behaves oddly upon hitting the floor. It rotates in opposite directions, as if it has too much grip, even without a physical material. If you hit the ball from underneath, it moves forward but rotates backward, causing it to immediately reverse direction. If the impulse is powerful enough, the ball hits the wall and instead of bouncing back, it keeps rotating in place, similar to a character in a video game walking against a wall.

Here’s a video of the issue: It’s a short, 2-second clip, but you can clearly see the ball hitting the wall and then continuing to rotate against it instead of bouncing back. It bounces back, but quickly goas back to the wall.

If i reduce the impulse intensity, by dividing it even further, it gets harder to hit the ball. In the sense that the ball feels “heavy” since i need to move the club a lot faster to make it go further, and there’s a point where the Controllers will stop registering properly, since i’m going way to fast.

Any advice on how to fix this would be greatly appreciated!

Hey!

Update: I think I solved the issue with the ball’s rotation upon impact. Instead of using the impact point location in the “Add Impulse at Location” node, I’m now using the ball’s World Location.

As shown below:

What’s happening now is that the impulse is being applied to the center of the ball instead of the impact location (the specific point on the ball’s surface where the club hit).

I understand that this rotation exists in real-life situations, but in Unreal, it’s too prominent if the impulse is substantial.

However, the issue with the impulse is still present. The calculated impulse is so strong that it prevents the ball from bouncing properly, making it behave like it did in the video I shared in the original post. I’m still working on understanding how to solve this and am open to any and all suggestions.

Once I figure out the excessive impulse issue, it might make sense to revisit the ball’s rotation to ensure it aligns with the proper impulses and behaves more realistically.

Thanks for hanging around!