DoTweenPath的具体使用实例

目录

1.基础属性

 Scene View Commands

INfo

Tween Options

Path Tween Options

Path Editor Options:轨迹编辑参数,就不介绍了

ResetPath:重置轨迹Events:

WayPoints:移动轨迹点

DOPath​

DOLocalPath

2.DoTween Pro中运动轨迹(DoTween Path)如何变为相对运动

3.代码动态添加点数

4.ex


1.基础属性


 Scene View Commands


(1)SHIFT+CTRL:add a waypoint加一个轨迹点
(2)SHIFT+ALT:remove a waypoint移除一个轨迹点

INfo


(1)Path Length:轨迹长度

Tween Options


(1)AutoPlay:自动播放
(2)AutoKill:播放完自动销毁动画
(3)Duration:动画时长
        SpeedBased:If selected ,the duration will count as units/degreex second;如果被选上,该时间作为单位时间。

(4)Delay:延时
(5)Ease:这是一个枚举,可以理解为动画播放速率曲线

这里写图片描述

 

(6)Loops:循环次数,动画循环播放的次数
-1:表示 一直循环
0:表示只播放一次
当该值>1时,检视面板出现LoopType,顾名思义就是指循环类型:
Restart:重新开始,后面的动画循环播放会从起点重新开始;
Yoyo:来回播放
Incremental:增加的,后面的path移动动画会在上一次循环的终点的基础上进行播放

(7)ID:动画ID
(8)UpdateType:这个枚举有三个值,指更新类型
Normal:正常更新,Update()
Late:晚于更新,LateUpdate()
Fixed:固定更新,FixedUpdate()

Path Tween Options


(1)Path Type:轨迹线类型
Linear:线型的
Catmull Rom:曲线
(2)Close Path:封闭曲线,将起点和终点相连
(3)Lock Rotation:锁旋转,xyzw

Path Editor Options:轨迹编辑参数,就不介绍了

ResetPath:重置轨迹
Events:


(1)OnStart:开始时
(2)OnPlay:播放时
(3)OnUpdate:更新时
(4)OnStep:单步完成时
(5)OnComplete:完成时
(6)OnCreated:动画创建时
事件顺序为:OnCreated->OnStart->OnPlay->OnUpdate(一直执行,直到完成),动画过程中单步完成时执行OnStep,整个动画完成后执行OnComplete

WayPoints:移动轨迹点


其中右边的Copy to clipboard,将坐标复制至剪贴板

加减按钮即指增加减少坐标点

DOPath

这里写图片描述

DOLocalPath

这里写图片描述

 

 

2.DoTween Pro中运动轨迹(DoTween Path)如何变为相对运动

  1. 声明类型时一定要声明类型为DOTweenPath(不要用Tween),因为DORestart只能用于DOTweenPath和DOTweenAnimation。
  2. 一般轨迹是固定的。但是——这里有个但是,如果你Restart之后,它会根据自身的当前位置,重新生成路径,这就解决了我们上面所述的问题
  3. 轨迹是世界坐标,在unity编辑器里勾选的(relative)相对运动,只在编辑器里有效?

3.代码动态添加点数

	public Vector3[] vector3s;
    public Transform[] targets;
    public Transform earth;
    private void Awake()
    {
        for (int i = 0; i < targets.Length; i++)
        {
            vector3s[i] = new Vector3(targets[i].position.x, targets[i].position.y, targets[i].position.z);
        }
    }
    private void Start()
    {
        earth.DOPath(vector3s, 50, PathType.Linear).SetEase(Ease.Linear).SetLoops(-1);
    }

4.ex

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices.WindowsRuntime;
using DG.Tweening;
using DG.Tweening.Plugins.Core.PathCore;
using UnityEngine;

public class DomoveSimpleScript : MonoBehaviour
{
    //public Ease m_MoveType = Ease.Linear;
    public float m_Speed = 5f;
    public float m_CheckTime = 1f;
    private List<Vector3> m_PointList;
    private Action mf_Complete;
    void Awake()
    {
        if (m_PointList==null)
        {
            m_PointList=new List<Vector3>();
        }
    }
	
	//将所需的路径点信息添加
    public void AddWayPoint(Vector3 V)
    {
        if (m_PointList==null)
        {
            m_PointList=new List<Vector3>();
        }
        m_PointList.Add(V);
    }
	//
    public void DoMove(float Spd=1.0f,Action F=null,Action stepFunc=null,Ease moveType = Ease.Linear)
    {
        m_Speed = Spd;
		
		//路径完成后的回调
        mf_Complete = F;
        if (m_PointList!=null)
        {
           var doAni=  transform.DOPath(m_PointList.ToArray(), m_Speed);
           doAni.SetEase(moveType);
		   //默认朝向
           doAni.SetLookAt(0);
           doAni.OnWaypointChange(
                (s) =>
                {
                    //Debug.LogError(s);
					//单步完成后的回调
                    stepFunc();
                });
           doAni.OnComplete(OnComplete);
            
            m_isStop = false;
        }
    }
    public bool IsMoving()
    {
        return (!m_isStop);
    }
    private float Dtime = 0f;
    private bool m_isStop = true;
    private void Update()
    {
        if (m_isStop)
            return;
        Dtime += Time.deltaTime;
        if (Dtime > m_CheckTime)
        {
            Dtime = 0;
        }
    }
    void OnComplete()
    {
        m_isStop = true;
        m_PointList.Clear();
        if (mf_Complete!=null)
        {
            mf_Complete();
        }
    }
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值