Guest User

Untitled

a guest
Oct 6th, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. private IEnumerator CorrectAfterTrick(Vector3 targetForward, Vector3 targetUp, Action callback, float VerticalTorqueMagnitude = 2000.0f, float HorizTorqueMagnitude = 2000.0f)
  2. {
  3. float endAligmentTime = Time.time + TrickCorrectionTime;
  4. while (Time.time <= endAligmentTime)
  5. {
  6. RigidBody.angularVelocity = Vector3.zero;
  7. if (VerticalTorqueMagnitude > 0.001f) { RigidBody.AddTorque(MathHelper.CalculateTorqueForAligment(VerticalTorqueMagnitude, targetUp, Direction.Up)); }
  8. if (HorizTorqueMagnitude > 0.001f) { RigidBody.AddTorque(MathHelper.CalculateTorqueForAligment(HorizTorqueMagnitude, targetForward, Direction.Forward)); }
  9.  
  10. yield return new WaitForFixedUpdate();
  11. }
  12.  
  13. skate.RigidBody.angularVelocity = Vector3.zero;
  14. playingRecovery = null;
  15. callback();
  16. }
  17.  
  18. static public Vector3 CalculateTorqueForAligment(float magnitude, Vector3 targetDirection, Direction direction)
  19. {
  20. Vector3 rigidBodyDirection = GetDirectionByTransform(RigidBody, direction);
  21. return (Vector3.Cross(rigidBodyDirection, targetDirection) * magnitude);
  22. }
  23.  
  24. static public Vector3 GetDirectionByTransform(Rigidbody RigidBody, Direction direction)
  25. {
  26. float backwardsScalar = Reversed ? -1.0f : 1.0f;
  27. if (direction == Direction.Right) { return RigidBody.transform.right * backwardsScalar; }
  28. if (direction == Direction.Forward) { return RigidBody.transform.forward * backwardsScalar; }
  29. if (direction == Direction.Up) { return RigidBody.transform.up; }
  30.  
  31. return Vector3.zero;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment