箭头移动脚本特效

将此脚本挂载图片上面,可以实现图片向某个方向移动然后再回到原地,反复执行。这样最初时为了实现一个箭头图片不断移动来达到提示的ui效果。

/*--------------------------------------------------------------------

  • Author Name: DXL
  • Creation Time: 6/3/2019 6:32:52 PM
  • File Describe: 箭头提示的特效
  • ------------------------------------------------------------------*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

public class ArrowTipEffect : MonoBehaviour
{
public enum TipEffect
{
Up,
Down,
Left,
Right,
Flcker, //闪烁
}

public TipEffect tip;           //当前效果
public float moveDistance;      //移动距离
public float moveTime = 1f;   //单次特效时间

Vector3 p;
// Use this for initialization
void Start()
{
    StartMove();
}

void OnDisable()
{
    DOTween.Pause(transform);
}

void OnEnable()
{
    p = transform.localPosition;
    //这里不能简简单单的恢复,因为物体可能位置发生了变化,里面的坐标还是之前旧的
    //DOTween.Restart(transform);
    //DOTween.Play(transform);
    StartMove();
}


private void OnDestroy()
{
    DOTween.Kill(transform);
    if(TimeManager.Instance)
    {
        TimeManager.Instance.Destroy(transform.name + "flicker");
    }
    
}



void StartMove()
{
    p = transform.localPosition;
    if (tip == TipEffect.Up)
    {
        transform.DOLocalMove(new Vector3(p.x, p.y + moveDistance, p.z), moveTime).SetLoops(-1, LoopType.Restart);
    }
    else if (tip == TipEffect.Down)
    {
        transform.DOLocalMove(new Vector3(p.x, p.y - moveDistance, p.z), moveTime).SetLoops(-1, LoopType.Restart);
    }
    else if (tip == TipEffect.Left)
    {
        transform.DOLocalMove(new Vector3(p.x - moveDistance, p.y, p.z), moveTime).SetLoops(-1, LoopType.Restart);
    }
    else if (tip == TipEffect.Right)
    {
        transform.DOLocalMove(new Vector3(p.x + moveDistance, p.y, p.z), moveTime).SetLoops(-1, LoopType.Restart);
    }
    else if (tip == TipEffect.Flcker)
    {
        TimeManager.Instance.AddTimerRepeat(transform.name + "flicker", moveTime / 2, () =>
        {
            transform.gameObject.SetActive(!transform.gameObject.activeInHierarchy);
        });
    }
}

}

你可能感兴趣的:(脚本功能)