Dotween Path 路径动画使用方法详解

11 篇文章 8 订阅
9 篇文章 15 订阅

Dotween对于路径动画部分的api我觉得注释的过少了,很多用法没有写清楚,这里我就对Dotween Path做一下详细说明

1、API

Dotween对于路径动画就只提供了两个方法,一个是针对于世界坐标的,一个是针对于局部坐标的,本质上没啥区别,我就以世界坐标的方法为例,进行讲解
在这里插入图片描述

参数讲解:

waypoints: 是提供路径上点的坐标,需要按顺序添加进数组
duration:路径动画的整体持续时间
pathType:路径类型(就是点于点之间路径连线的生成方式)
     它内部预定义了两种类型
      Linear:直线
      CatmullRom:曲线
pathModel: 路径模式(用于确定正确的LookAt方向)
     它内部定义了四种类型
      Ignore:忽略此参数和设置的LookAt参数
      Full3D:在3d场景下,代表物体可以看向任何方向
      TopDown2D:代表物体只能上下旋转,看向物体
      Sidescroller2D:代表物体只能左右旋转看向物体
resolution:路径分辨率,代表路径点之间的曲线由多少个点构成,也就是点越多,曲线就越圆,此参数在直线路径类型下无效
gizmoColor:在Scene视图中,生成的路径曲线的颜色

2、设置选项

1)SetOptions

在这里插入图片描述
closePath:是否是封闭路径,设为true的话,会形成闭环,最后运动回起点
lockPosition:锁定位置,参数为轴向,例如,填入AxisConstraint.X的话,横向的位移将被锁定,物体只能在其他方向上移动
lockRotation:锁定旋转,参数为轴向,和锁定位置同理,锁定的轴向不能旋转

2)SetLookAt

在这里插入图片描述
这个方法是很重要的方法,官方的API却有很多地方没有说清楚,有些需要注意的地方,提都没有提
它的后两个参数,是提供看向的轴向,一般很少更改,就不介绍了,主要介绍第一个参数

它针对于第一个参数的改变,有三种重载
  (1)Transform类型参数 lookAtTransform:也就是要看向的物体
  (2)Vector3类型参数 lookAtPosition:也就是要看向的位置
  (3)float类型的参数 lookAhead:一个向前看的参数
前两个很容易理解,就不多说了,主要说一下第三种 lookAhead

lookAhead 参数

限制
这个参数的取值范围是0到1的
首先说明,它值的变化,产生的效果
在这里插入图片描述
这个值的变化,决定了物体开始移动时的朝向

但是文档上没有提到的是,这个参数在不同数值下的效果,受到SetOptions的第一个参数closePath影响

比较通俗的解释:
(1)closePath为false (运动最后,物体的朝向移动是路径的运动方向的前方)
lookAhead = 0:目标会沿着路径看向前方
lookAhead != 0:目标会按照参数,决定开始运动时的朝向,但是运动期间会匀速转动朝向,最后朝向会转回路径前方的朝向

(2)closePath为true(开始时确定方向后就不会变化了)
lookAhead = 0:目标会沿着路径看向前方
lookAhead >0 && lookAhead <1:一直保持开始时的方向(即如上图所示)
lookAhead = 1:这个时候,SetLookAt没有效果,即物体不会改变朝向

这里所说的朝向是相对于运动路径的朝向

路过的大神给出的学术性的解释:
lookAhead 参数的意思就是 看前看的偏移量

假设整个路径normalize. 即开始点为0,结束点为1. 走到路程的一半即为0.5.

所以如果lookAhead = 0.5 时, 假设当前Transform行走进程到 0.1的位置,则会 LookAt 行走进程 0.6的位置.

如果closePath=true, 则 lookAtPercent = Mathf.Repeat(movePercent + lookAhead, 1);
否则closePath=false, 则 lookAtPercent = Mathf.Clamp01(movePercent + lookAhead);

我会在我的公众号上推送新的博文,也可以帮大家解答问题
微信公众号 Andy and Unity 搜索名称或扫描二维码
在这里插入图片描述
希望我们能共同成长,共同进步

  • 32
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要实现Dotween Path完成路径动画后平滑倒播,你可以使用Dotween的Reverse方法来实现。下面是一个示例代码片段,演示了如何使用Reverse方法来实现平滑倒播: ```csharp using UnityEngine; using DG.Tweening; public class PathAnimation : MonoBehaviour { private Tweener tweener; private void Start() { // 在这里创建Dotween路径动画 tweener = transform.DOPath(/* your path */, /* duration */, /* path type */) .SetOptions(/* your options */) .OnComplete(OnPathComplete); } private void Update() { if (Input.GetKeyDown(KeyCode.Space)) { // 按下空格键时开始倒播 ReversePath(); } } private void ReversePath() { if (tweener != null) { // 停止当前路径动画 tweener.Kill(); // 反转路径 tweener.ChangeEndValue(/* your new end value */, /* duration */) .SetOptions(/* your options */) .OnComplete(OnReversePathComplete); } } private void OnPathComplete() { // 路径正向播放完成的回调 Debug.Log("Path animation completed."); } private void OnReversePathComplete() { // 路径倒播完成的回调 Debug.Log("Path animation reversed."); } } ``` 在上面的代码中,你需要根据你的需求来设置路径动画的起点、终点、持续时间、路径类型等参数。通过按下空格键,你可以触发倒播动画。完成路径动画和倒播动画时,对应的回调函数将会被调用。 请注意,你需要先安装并导入Dotween库,然后在代码中引入`using DG.Tweening;`来使用Dotween的相关方法和类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值