Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using DG.Tweening;
- public class MoveAction : ActionMethod
- {
- public GameObject MovingObject;
- public MoveMethod MoveMode;
- public Vector2 MoveVector;
- public GameObject TargetPosition;
- public Vector2 Offset;
- public float Duration;
- private static Dictionary<GameObject, Tweener> s_ongoingTweeners = new Dictionary<GameObject, Tweener>();
- public override void Perform()
- {
- if (s_ongoingTweeners.ContainsKey(MovingObject) && !s_ongoingTweeners[MovingObject].IsComplete())
- {
- s_ongoingTweeners[MovingObject].Kill();
- }
- Vector3 targetPosition = MovingObject.transform.position;
- switch (MoveMode)
- {
- case MoveMethod.Relative:
- targetPosition = MovingObject.transform.position + (Vector3) (MoveVector + Offset);
- s_ongoingTweeners[MovingObject] = DOTween.To(() => MovingObject.transform.position, (f) => MovingObject.transform.position = f, targetPosition, Duration);
- break;
- case MoveMethod.Absolute:
- targetPosition = LevelSceneManager.Instance.GetSceneLocalToGlobal(MoveVector + Offset);
- s_ongoingTweeners[MovingObject] = DOTween.To(() => MovingObject.transform.position, (f) => MovingObject.transform.position = f, targetPosition, Duration);
- break;
- case MoveMethod.ToObject:
- s_ongoingTweeners[MovingObject] = DOTween.To(() => MovingObject.transform.position, (f) => MovingObject.transform.position = f, TargetPosition.transform.position + (Vector3) Offset, Duration);
- break;
- }
- }
- public enum MoveMethod
- {
- Relative,
- Absolute,
- ToObject
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement