|
I'm trying to engineer a physics model similar to a Newton's Cradle (those click-clack office toys) as if the anchor for every ball were in a cocentric point, and gravity was not an applicable force. I want to use the rigidbodies, colliders, and joints... the notion is that all of the balls would be stationary around this center point, and you could apply a force or torque to one of the balls and it would begin colliding with other balls in the spherical 'cloud' of balls -- all of which are constrained by its rigid, yet freely rotating tether to the anchor. I've tried a few simulations, but I don't think I fully understand how to set up configurable joint and keep it firmly anchored... I'm having a hard time understanding, through documentation, how joints, rigidbodies, and colliders interact. Some guidance on setting this up and explanation of how the various components will interact and constrain each other would be really great!
(comments are locked)
|
|
It sounds like you want all the balls to be attached (via a pivot point) to the World and not to each other. For each of the balls, you can do this: You can use a Configurable Joint and in leave the Connected Body variable empty. This connects this Rigidbody with the world. Set the Anchor to be a point relative to the ball itself, which should be the pivot. For example, if you have a ball at <0,-10,0> that you want to rotate around the origin <0,0,0>, then you need to specify the Anchor as <0,10,0>. Now, set the XMotion, YMotion, and ZMotion to Locked. Leave the Angular XMotion, Angular YMotion, and Angular ZMotion set to Free. You can disable gravity in the Rigidbody component. The above seems to work for me. Very nice, thank you. The balls seem to have a springyness from the anchor that I cannot fully disengage. I am setting the positional offsets and anchors of the rigidbodies OnAwake(), despite the docs recommendation that I set them to ideals in the editor. I'm wondering if the initial position changes are being registered as velocity. Are there values that will set the linearLimit as a rigid spring that won't have any give?
Nov 16 '09 at 06:23 PM
Sinaz
I am afraid this is where my knowledge ends. Perhaps you can ask a new question with the more specific sub-problem you still need to solve, and somebody might notice it better. Like e.g. "Controlling ConfigurableJoint springyness from script".
Nov 16 '09 at 08:39 PM
runevision ♦♦
I have solved this. It turned out to be very simple. The solver for the joint seems to always treat the joint with some sort of elasticity. Therefore, mucking about with the XYZMotions and LinearLimit seem to fail at eliminating all of the bounciness regardless of how tightly you attempt to limit it. You either get a spring that bounces, one that stalls, or one that explodes. However! If I leave them locked, and set the ProjectionMode to Position Only, then the correction this applies completely overrides the default springiness-- the joint always snaps to its intended length each frame.
Nov 17 '09 at 10:42 PM
Sinaz
(comments are locked)
|
