1
\$\begingroup\$

I have a basic Unity project on GitHub.

Basically, I have a Cuestick that aims and shoots using the mouse. You can rotate around the cueball with your mouse and when you're ready to shoot, you can hold down the right mouse button and move the mouse forward. The game came follows the cuetip.

However, the collision between the cuestick and cueball is wonky. The cuestick protrudes through the ball and only pushes the ball forward only a little bit.

I've created rigid bodies and colliders for both cuestick and cueball. I've set the cuestick's rigid body to kinematic (if it's unchecked, the poolstick will barely dent the ball). I've tried using OnCollisionEnter and a Debug.Log statement to no avail.

Any help would greatly be appreciated. You can find my scripts in /GameLogic (they're F# sharp scripts whose binaries get compiled and outputted into the /assets folder).

\$\endgroup\$
2
  • 1
    \$\begingroup\$ How are you moving the pool cue? Are you imparting velocities/impulses to it, or manually positioning it via its transform? If it's the latter, then to the physics engine it may appear that it's teleported into the ball, with no particular forward momentum to transfer, so it just resolves the penetration by the smallest displacement/velocity change that it can. \$\endgroup\$
    – DMGregory
    Commented Sep 21, 2016 at 2:49
  • \$\begingroup\$ Additionally if you do use AddForce() make sure that you set the masses of each object to sensible values. \$\endgroup\$ Commented May 10, 2017 at 13:35

1 Answer 1

1
\$\begingroup\$

Why using a complicated collision detection algorithm? Just calculate the distance from the center of the ball to the end of the cuestick. If it's less than or equal to the ball's radius, the cuestick is colliding with the ball.

\$\endgroup\$
2
  • \$\begingroup\$ I would venture to guess that he wants a decent collision algorithm to model complete rigid body physics. Just detecting a collision like this wouldn't include things like velocity, jerk, spin, acceleration, etc... \$\endgroup\$
    – dannuic
    Commented Apr 25, 2016 at 17:13
  • \$\begingroup\$ This collision model will easily produce the hit point and normal vectors required to do everything you explained. It is even analytically correct if a cylinder were used instead of a point to represent the stick. \$\endgroup\$
    – MickLH
    Commented Apr 25, 2016 at 17:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .