using DG.Tweening; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class StopValve : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { private Vector3 start = new Vector3(0, 0, -80); //滑动点到阀门图片中点的向量 [SerializeField] Image stopValveImage; //截止阀 public float timeCount = 0; public float limitTime = 0; public int index; //阀门旋转多少圈可以开到100 public Vector2 currentPos = new Vector2(); public Transform trans; [SerializeField] int mix; [SerializeField] int max; [SerializeField] float X;//X或者特定轴要固定的 [SerializeField] int sum = 90;//初始位置 [SerializeField] int ZhuanSum;//要旋转一次的角度 void OnEnable() { //UIManager.ins.ButtonToUI_but(true, confirm, popup); //AudioManager.ins.PlayAudio(7); //StartCoroutine(Deng()); } /// /// 开始拖拽 /// /// public void OnBeginDrag(PointerEventData eventData) { currentPos = eventData.position; } /// /// 拖拽中 /// /// public void OnDrag(PointerEventData eventData) { timeCount += Time.deltaTime; if (timeCount > limitTime) { if (currentPos.x - eventData.position.x > 0) { sum += ZhuanSum; } if (currentPos.x - eventData.position.x < 0) { sum += -ZhuanSum; } Debug.Log("旋转的方法"); Deng(sum); timeCount = 0; } } void Deng(float angle) { float z = Mathf.Clamp(angle, mix, max); stopValveImage.transform.eulerAngles = new Vector3(0, 0, z); if (transform.name.Equals("万用表")) { trans.DOLocalRotate(new Vector3(X, 0, ~(int)z), 0.01f); } else { trans.DOLocalRotate(new Vector3(X, ~(int)z, 0), 0.01f); } Debug.Log(Mathf.Clamp(~(int)z, mix, max)); } /// /// 拖拽结束 /// /// public void OnEndDrag(PointerEventData eventData) { timeCount = 0; } }