TorqueStabilizer.cs 770 B

1234567891011121314151617181920212223242526272829
  1. //This asset was uploaded by https://unityassetcollection.com
  2. using UnityEngine;
  3. using System.Collections;
  4. public class TorqueStabilizer : MonoBehaviour {
  5. public float stability = 0.3f;
  6. public float speed = 2.0f;
  7. private Rigidbody thisRigidBody;
  8. void Start () {
  9. thisRigidBody = GetComponent<Rigidbody>();
  10. }
  11. // Update is called once per frame
  12. void FixedUpdate () {
  13. Vector3 predictedUp = Quaternion.AngleAxis(
  14. thisRigidBody.angularVelocity.magnitude * Mathf.Rad2Deg * stability / speed,
  15. thisRigidBody.angularVelocity
  16. ) * transform.up;
  17. Vector3 torqueVector = Vector3.Cross(predictedUp, Vector3.up);
  18. thisRigidBody.AddTorque(torqueVector * speed*GetComponent<Rigidbody>().mass*4);
  19. }
  20. }