AniDriver_MoveToTarget.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using ChivaXR;
  5. using System;
  6. public class AniDriver_MoveToTarget : AnimationDriverBase
  7. {
  8. public GameObject moveObj;
  9. public Vector3 targetPos;
  10. [SerializeField]
  11. private Vector3 initPos;
  12. public float speed = 1;
  13. public override void FinishedState()
  14. {
  15. initPos = moveObj.transform.position;
  16. moveObj.transform.position = targetPos;
  17. }
  18. public override void InitState()
  19. {
  20. moveObj.transform.position = initPos;
  21. }
  22. public override void StartPlay(Action finishedCallBack = null)
  23. {
  24. StartAniCoroutine(MoveToTargetVector(finishedCallBack));
  25. }
  26. IEnumerator MoveToTargetVector(Action finishedCallback)
  27. {
  28. while (moveObj.transform.position != targetPos)
  29. {
  30. moveObj.transform.position = Vector3.MoveTowards(moveObj.transform.position, targetPos, speed * Time.deltaTime);
  31. yield return new WaitForEndOfFrame();
  32. }
  33. finishedCallback?.Invoke();
  34. }
  35. }