56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace BNG {
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Set the Rotation of a Transform based on a Bow's draw percentage
|
|||
|
/// </summary>
|
|||
|
public class BowArm : MonoBehaviour {
|
|||
|
|
|||
|
public Bow BowItem;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// When to modify the rotation : 0-1;
|
|||
|
/// </summary>
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|