I am trying to make a frisbee golf game, and I am stuck on the physics of the frisbee.

I can get the disc to fly, but I have not been able to add spin or make it act the way a frisbee would in real life.

If you can provide some code that would be great, or at least tell me what properties the disc object would need in order for this to work.

The disc has a rigid body with the following set:

  • Mass = 0.175
  • Drag = 0
  • Angular Drag = 200 (I am sure this needs to be changed, just wanted to prevent forward rolling)
  • User gravity is checked
  • Is kinematic is unchecked, but changed in a script
  • Interpolate = None
  • Collision Detection = Discrete
  • Constraints are all unchecked

Anyway, any guidance would be much appreciated.


migrated from stackoverflow.com Jan 9 '17 at 17:32

This question came from our site for professional and enthusiast programmers.

  • \$\begingroup\$ An important factor of Frisbee physics which the Unity physics engine doesn't model at all is aerodynamic lift. The Magnus effect might also play a role. This is a topic where I would actually turn to academic literature. Some physics student surely has written a paper about Frisbee aerodynamics. \$\endgroup\$ – Philipp Jan 9 '17 at 17:35
  • \$\begingroup\$ Thank you. I guess I was hoping Unity would have something "pre-built", but oh well. \$\endgroup\$ – linuxer Jan 9 '17 at 18:09
  • \$\begingroup\$ I did a bit of research and realized that this is really more something for physics.stackexchange.com. Just don't mention Unity at all and ask for how to calculate the trajectory of a spinning frisbee disc. \$\endgroup\$ – Philipp Jan 9 '17 at 21:46

For spinning make sure to look into RigidBody.AddTorque (https://docs.unity3d.com/ScriptReference/Rigidbody.AddTorque.html)

If things get wobbly, you might want to play around with adding a GameObject container "around" the frisbee, so the trajectory is applied on the container and the spinning on the actual frisbee object.

  • \$\begingroup\$ I gave that a try: attachedRigidbody.AddTorque(attachedRigidbody.transform.up * 5); The attachedRigidbody is on the disc object. It seems to have no effect \$\endgroup\$ – linuxer Jan 7 '17 at 21:19
  • 1
    \$\begingroup\$ This can't work, because the physics of a Frisbee in flight is influenced by physical effects like precession, aerodynamic drag, aerodynamic lift and the Magnus effect which Unity doesn't model and which aren't that trivial to simulate. \$\endgroup\$ – Philipp Jan 9 '17 at 18:25
  • \$\begingroup\$ Any suggestions on where to start doing this in Unity? I have basically no experience with physics in unity. \$\endgroup\$ – linuxer Jan 9 '17 at 20:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.