Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private IEnumerator CorrectAfterTrick(Vector3 targetForward, Vector3 targetUp, Action callback, float VerticalTorqueMagnitude = 2000.0f, float HorizTorqueMagnitude = 2000.0f)
- {
- float endAligmentTime = Time.time + TrickCorrectionTime;
- while (Time.time <= endAligmentTime)
- {
- RigidBody.angularVelocity = Vector3.zero;
- if (VerticalTorqueMagnitude > 0.001f) { RigidBody.AddTorque(MathHelper.CalculateTorqueForAligment(VerticalTorqueMagnitude, targetUp, Direction.Up)); }
- if (HorizTorqueMagnitude > 0.001f) { RigidBody.AddTorque(MathHelper.CalculateTorqueForAligment(HorizTorqueMagnitude, targetForward, Direction.Forward)); }
- yield return new WaitForFixedUpdate();
- }
- skate.RigidBody.angularVelocity = Vector3.zero;
- playingRecovery = null;
- callback();
- }
- static public Vector3 CalculateTorqueForAligment(float magnitude, Vector3 targetDirection, Direction direction)
- {
- Vector3 rigidBodyDirection = GetDirectionByTransform(RigidBody, direction);
- return (Vector3.Cross(rigidBodyDirection, targetDirection) * magnitude);
- }
- static public Vector3 GetDirectionByTransform(Rigidbody RigidBody, Direction direction)
- {
- float backwardsScalar = Reversed ? -1.0f : 1.0f;
- if (direction == Direction.Right) { return RigidBody.transform.right * backwardsScalar; }
- if (direction == Direction.Forward) { return RigidBody.transform.forward * backwardsScalar; }
- if (direction == Direction.Up) { return RigidBody.transform.up; }
- return Vector3.zero;
- }
Advertisement
Add Comment
Please, Sign In to add comment