using System.Collections; using System.Collections.Generic; using UnityEngine; namespace BNG { /// /// Set the Rotation of a Transform based on a Bow's draw percentage /// public class BowArm : MonoBehaviour { public Bow BowItem; /// /// When to modify the rotation : 0-1; /// public float BowPercentStart = 50f; public float RotateDegrees = 10f; // How much past the initial rotation we should rotate public float Speed = 50f; private Quaternion _startRotation; private Quaternion _endRotation; public bool RotateX = true; public bool RotateZ = false; void Start() { _startRotation = Quaternion.Euler(transform.localEulerAngles); if(RotateX) { _endRotation = Quaternion.Euler(new Vector3(_startRotation.x + RotateDegrees, transform.localEulerAngles.y, transform.localEulerAngles.z)); } if (RotateZ) { _endRotation = Quaternion.Euler(new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, transform.localEulerAngles.z + RotateDegrees)); } } // Update is called once per frame void Update() { if (BowItem.DrawPercent >= BowPercentStart) { transform.localRotation = Quaternion.RotateTowards(transform.localRotation, _endRotation, Speed * Time.deltaTime); } else if(BowItem.DrawPercent < BowPercentStart && BowItem.DrawPercent > 5) { transform.localRotation = Quaternion.RotateTowards(transform.localRotation, _startRotation, Speed * Time.deltaTime); } else { transform.localRotation = _startRotation; } } } }