using System.Collections; using System.Collections.Generic; using UnityEngine; using ChivaXR; using System; public class AniDriver_MoveToTarget : AnimationDriverBase { public GameObject moveObj; public Vector3 targetPos; [SerializeField] private Vector3 initPos; public float speed = 1; public override void FinishedState() { initPos = moveObj.transform.position; moveObj.transform.position = targetPos; } public override void InitState() { moveObj.transform.position = initPos; } public override void StartPlay(Action finishedCallBack = null) { StartAniCoroutine(MoveToTargetVector(finishedCallBack)); } IEnumerator MoveToTargetVector(Action finishedCallback) { while (moveObj.transform.position != targetPos) { moveObj.transform.position = Vector3.MoveTowards(moveObj.transform.position, targetPos, speed * Time.deltaTime); yield return new WaitForEndOfFrame(); } finishedCallback?.Invoke(); } }