箭头移动脚本特效

将此脚本挂载图片上面,可以实现图片向某个方向移动然后再回到原地,反复执行。这样最初时为了实现一个箭头图片不断移动来达到提示的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);
        });
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值