- Home /
Hover spring in local gravity
I'm currently working on an F-Zero/Wipeout inspired anti-gravity racing game. Using Ray casting, the vehicle's local gravity is set to the normal of the face of the race track mesh directly below the vehicle, this allows the vehicle to potentially drive upside down and around loops.
I initially had a working system that used low friction Wheel Colliders but was unsatisfied with the results. I am now working with a spring system that uses forces to keep the vehicle afloat based on the example located here http://forum.unity3d.com/threads/38644-Floating-a-vehicle-above-the-ground-with-multiple-springs?p=248312&viewfull=1#post248312 . I am currently trying to extend the code to work under local gravity and have managed to implement something that works quite well on inclines less than around 90 degrees. However, if the vehicle attempts to traverse a steep incline (about 90 degrees and above), the vehicle is sucked down into the track and becomes stuck.
I'll be extremely grateful if someone can look over my code and tell me where I'm going wrong or if there is a fundamental flaw in the way I'm implementing things (hopefully it's something embarrassingly simple and easy to fix).
Let me know if you need any more information.
void CalculateSpring(RaycastHit hit) {
Vector3 neutralForce = rigidbody.mass * myNormal * gravity * 0.2f;
float heightDifference = desiredHeight - hit.distance + 0.015f*Mathf.Sin(3*Time.time);
float addForce = (heightDifference * spring);
Vector3 addForceVector = new Vector3 (addForce - (rigidbody.GetPointVelocity(transform.position).x * damp), addForce - (rigidbody.GetPointVelocity(transform.position).y * damp), addForce - (rigidbody.GetPointVelocity(transform.position).z) * damp);
float totalForce = (neutralForce.sqrMagnitude + Vector3.Dot(addForceVector,myNormal));
rigidbody.AddRelativeForce(0, totalForce, 0);
}
No. Typical wait times are under and hour, but sometimes it does happen. When you earn 15 $$anonymous$$arma points by getting thumbed up for comments, accepting answers, getting thumbed up on answers or having your answer accepted, your questions will no longer go through moderation. Fifteen $$anonymous$$arma points is one accepted answer or two thumbs up.
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Im having a Problem with Basic Collision. 1 Answer
how to create Magnetic repulsion ? 0 Answers
Faux Gravity Prolem? #2 2 Answers
Hooking RigidBody.AddForce 0 Answers