Sign in to follow this  

Need help with spring constraint

Recommended Posts

Hi. I'm trying to implement a spring/elastic constraint into a game and am having trouble getting a certain part to work. Right now, 'Part B' (Pb) is attached to 'Part A' (Pa), and it works fine. The problem is that when Part B is moved, Part A does not move. I've tried applying an equal and opposite force on to Part A but that causes them both to fly off and go crazy at a high speed, so I guessed that was wrong.


Here's the code I have so far: (It's in lua, but is self-explanatory) 

k = 64
b = 0.1
length = 10

dist = (Pa.Position - Pb.Position).Magnitude
unit = (Pa.Position - Pb.Position).Unit
force = (dist - length) * k
resist = Pb.Velocity * b * Pb:GetMass()
vector = (force * unit) - resist

applyForce(Pb, vector)

Don't know if this is the right place to post this, but Idk where else I could. Thanks

Share this post

Link to post
Share on other sites

The code strikes me as strangely asymmetric. The `resist' term should probably depend on the difference of the velocities of Pb and Pa, not just the velocity of Pb. Also, I would either not mention the mass of Pb or I would use something like the sum of the masses of Pb and Pa. And you should definitely apply the opposite force to Pa.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this