using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using VRTK; //一个触发可以旋转解锁/锁定的锁扣 public class SimpleLocker : VRUsableStepActionBase { [Tooltip("解锁状态角度")] [SerializeField] Vector3 freeAngle; Vector3 fiexdAngle; protected override void Awake() { base.Awake(); fiexdAngle = this.transform.localEulerAngles; InitCollider(); } public override void OnUsed() { SetUsable(false);//只能触发一次 避免重复触发结束事件 if (processName == ProcessEnum.teardown) this.transform.DOLocalRotateQuaternion(Quaternion.Euler(freeAngle), 0.5f).OnComplete(UnFixedMoveOver);//播放拆卸动画 else { this.transform.DOLocalRotateQuaternion(Quaternion.Euler(fiexdAngle), 0.5f).OnComplete(FixedMoveOver);//播放安装动画 } } private void FixedMoveOver() { fixedOver?.Invoke(); fixedOver = null;//执行一次后清除事件 避免重复触发 } private void UnFixedMoveOver() { unFixedOver?.Invoke(); unFixedOver = null;//执行一次后清除事件 避免重复触发 } void InitCollider() { foreach (var item in this.GetComponentsInChildren()) { item.isTrigger = true; } } }