DoTween DoPath使用总结

如果需要移动的同时平滑的看向坐标点,强烈建议自己用DoMove和DoRotate自己实现移动,不要用这个方法,这个方法会自动看向路点,会干扰动画

这个方法的作用是让物体沿给定的坐标点移动,使用中出了很多问题,在此总结一下

        //移动
        var core = transform.DOPath(
            Vect3的数组,
            移动时间,
            PathType.CatmullRom,
            PathMode.Full3D
            )
            .SetOptions(AxisConstraint.None, AxisConstraint.Y)
            .SetEase(Ease.Linear)//线性移动
        ;
        core.onWaypointChange = OnWayPointChange;

四个参数

1 坐标点的数组
2 通过所有路径点的耗时,可以自己定义一个速度,用目标到第一个点的距离加各个路径点之间的距离,除以速度,实现不同路径耗时不同
3 如何连接这些路径点,分为直线和曲线,直线在路径点转弯时会出现锐角路径
4 如何移动,保持默认

返回值

TweenerCore,需要3个泛型参数,建议直接用var,如果想看具体参数可以鼠标放到var上查看

扩展方法

这些扩展方法必须直接跟在DoPath后边,如果用core调用扩展方法没有任何作用
SetEase():运动中的速度趋势,Linear线性移动在各个位置都是相同的速度,突然开始突然结束,没有缓冲。OutQuad,越接近终点越慢。只建议用这两种
SetOptions():锁定移动中的位置和轴向,参数1 是位置,参数2 是轴向,如果我们不希望在某个方向或某个轴向发生移动或旋转,可以锁定
SetLookAt(): 参数0-1,视角转动的速度,越接近0越慢,移动中会用Z轴对齐下一个路径点的方向
SetLoop():重复,大于等于0不重复,-1为从头开始

事件

onWaypointChange :切换路点,委托方法需要一个int参数 如
private void OnWayPointChange(int pointIndex)
需要注意最后一个路点时会额外调一次,这个路点索引是越界的

OnComplete :完成移动,使用方法:

  image.transform.DOMove(endPoint.position, moveTime).onComplete += ()=> 
        {
            //回收到对象池
            pool.Add(image);
            image.gameObject.SetActive(false);
        };
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DOPathDotween中用于控制物体路径运动的函数之一,可以使物体沿着指定的路径进行运动。 下面是DOPath函数的基本用法: ```csharp // 2D路径运动 transform.DOPath(Vector3[] path, float duration, PathType pathType = PathType.Linear, PathMode pathMode = PathMode.TopDown2D, int resolution = 10, Color? gizmoColor = null); // 3D路径运动 transform.DOPath(Vector3[] path, float duration, PathType pathType = PathType.Linear, PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null); ``` 参数解释: - `path`:路径点的数组,可以是二维或三维数组,表示物体的运动路径。 - `duration`:路径运动的持续时间。 - `pathType`:路径类型,可选值为:线性(`PathType.Linear`)、Bezier曲线(`PathType.CubicBezier`)、Catmull-Rom曲线(`PathType.CatmullRom`)和插值曲线(`PathType.Spline`)等。 - `pathMode`:路径模式,可选值为:2D(`PathMode.TopDown2D`)和3D(`PathMode.Full3D`)。 - `resolution`:路径分辨率,用于控制曲线的平滑度,数值越大曲线越平滑,但是运算量也越大。 - `gizmoColor`:路径的颜色,可用于在编辑器中显示路径。 下面是一个示例代码,展示了如何使用DOPath函数来控制物体沿着弧形路径进行运动: ```csharp using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class ArcPath : MonoBehaviour { public Transform target; public float duration = 2f; public Vector3[] pathPoints; void Start() { // 设置路径点 pathPoints = new Vector3[] { new Vector3(-2f, 0f, 0f), new Vector3(0f, 2f, 0f), new Vector3(2f, 0f, 0f) }; // 沿着Bezier曲线进行运动 target.DOPath(pathPoints, duration, PathType.CubicBezier); } } ``` 在上面的代码中,我们首先定义了一个路径点数组,然后在Start函数中使用DOPath函数来控制物体沿着Bezier曲线进行运动。由于我们没有指定路径模式,因此默认使用2D路径模式来进行运动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值