10路径动画

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

public class PathMove : MonoBehaviour
{
    public Transform[] pointList;

    void Start()
    {
        //select方法,直接得到值,查询要返回的目标数据  
        int[] numm = { 1, 3, 5, 7 };
        var litt = numm.Select(itm => itm);
        foreach (int item in litt)
        {
            Debug.Log(item); // 1, 3, 5, 7
        }

        返回Vector3的数组
        var position = pointList.Select(u => u.position).ToArray(); //将pointList直接转为Object[] 数组;


        transform.DOPath(position, 5, PathType.CatmullRom).SetOptions(true).SetLookAt(new Vector3(0, 0, 0));

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

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

        //03 SetLookAt()
        //参数1 closePath:是否是封闭路径,设为true的话,会形成闭环,最后运动回起点
        //参数2 lockPosition:锁定位置,参数为轴向,例如,填入AxisConstraint.X的话,横向的位移将被锁定,物体只能在其他方向上移动
        //参数3 lockRotation:锁定旋转,参数为轴向,和锁定位置同理,锁定的轴向不能旋转
        //参数4 lookAhead参数:取值范围0-

    }

}

在这里插入图片描述
看向路径的前方
0.99:看向路径的后方
(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);
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值