unity c# hooke's law suspension
void FixedUpdate() { RaycastHit hit; for (int i = 0; i < wheelPoints.Length; i++) { var wheelPoint = wheelPoints[i]; if (Physics.Raycast(wheelPoint.transform.position, -transform.up, out hit, suspensionLength, layerMask)) { // Spring force float contactDepth = hit.distance - suspensionLength; float springForce = - stiffness * contactDepth; // Final force or suspension force float suspensionForce = springForce; rigidBody.AddForceAtPosition(transform.up * suspensionForce, wheelPoints[i].transform.position, ForceMode.Force); vehicleInAir = false; } else { vehicleInAir = true; } } }