using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; /******************************************************************************* *Create By CG *Function 点击后禁锢卡扣 *******************************************************************************/ namespace ZXK.GYJQR { public class JinGuKaKouCtrl : Step_0 { public JinGuKaKouCtrl(AZBS itemAttr) : base(itemAttr) { } public void BindInitTwo(GameObject geo1, Vector3 pos1, Vector3 rot1, GameObject geo2, Vector3 pos2, Vector3 rot2, System.Action jumpStepEvent) { Rigidbody part_qddlrg1; if (!geo1.TryGetComponent(out part_qddlrg1)) { part_qddlrg1 = geo1.AddComponent(); } part_qddlrg1.isKinematic = true; part_qddlrg1.useGravity = false; Rigidbody part_qddlrg2; if (!geo2.TryGetComponent(out part_qddlrg2)) { part_qddlrg2 = geo2.AddComponent(); } part_qddlrg2.isKinematic = true; part_qddlrg2.useGravity = false; PathManager pm_kakou_1 = geo1.GetComponent() ? geo1.GetComponent() : geo1.AddComponent(); PathManager pm_kakou_2 = geo2.GetComponent() ? geo2.GetComponent() : geo2.AddComponent(); pm_kakou_1.onMouseDown = new UnityEngine.Events.UnityEvent(); pm_kakou_2.onMouseDown = new UnityEngine.Events.UnityEvent(); pm_kakou_1.onMouseDown.AddListener(() => { if (!CG.UTility.PopUpMng._TriAble) return; geo1.transform.DOLocalMove(pos1, 2.0f); geo1.transform.DOLocalRotate(rot1, 2.0f).onComplete += () => { OutLineState(geo1, false); geo1.transform.DOKill(); }; geo2.transform.DOLocalMove(pos2, 2.0f); geo2.transform.DOLocalRotate(rot2, 2.0f).onComplete += () => { OutLineState(geo2, false); geo2.transform.DOKill(); }; OnDelayCort = CG.UTility.MonoManager.Instance.StartCoroutine(OnDelay(2.0f, jumpStepEvent)); }); pm_kakou_2.onMouseDown.AddListener(() => { }); } public Coroutine OnDelayCort; public IEnumerator OnDelay(float t, System.Action action) { yield return new WaitForSeconds(t); action?.Invoke(); } public void BindInit(GameObject geo, Vector3 pos, Vector3 rot, System.Action jumpStepEvent) { Rigidbody part_qddlrg; if (!geo.TryGetComponent(out part_qddlrg)) { part_qddlrg = geo.AddComponent(); } part_qddlrg.isKinematic = true; part_qddlrg.useGravity = false; PathManager pm_kakou_1 = geo.GetComponent() ? geo.GetComponent() : geo.AddComponent(); pm_kakou_1.onMouseDown = new UnityEngine.Events.UnityEvent(); pm_kakou_1.onMouseDown.AddListener(() => { OnExcuteRotateStep(pm_kakou_1, pos, rot, 2.0f, jumpStepEvent); }); } /// /// 执行旋转角度路径动画步骤 /// private void OnExcuteRotateStep(PathManager pm, Vector3 pos, Vector3 rot, float t, System.Action jumpStepEvent) { pm.transform.DOLocalMove(pos, t); OnDelayCort = CG.UTility.MonoManager.Instance.StartCoroutine(OnDelay(t, jumpStepEvent)); } } }