如果需要移动的同时平滑的看向坐标点,强烈建议自己用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 :完成移动