- 存在问题
- 解决办法
- 一、外套节点修正
- 二、设置forwardDirection
- 三、改模型的前向坐标
- 深入分析
- 查看源码
- 小疑问
- 测试SetLookAt( 0 -- 1)
- DOPath.SetLookAt结论
在物体延路径移动的过程中,物体会有一定的旋转或者翻转的情况,并不是我们想要的面朝路径的方向。网上查询的是,设置0时会看向路径,即使是我们SetLookAt(0)的情况下,还是有问题。经过一些测试发现了更多的问题和结论。
解决办法这种问题应该是模型的前向不对引起的,这里提供三种解决方法。
一、外套节点修正这个方式就是通过外面套一层节点,通过设置子节点的rotation来修正这种旋转问题。
二、设置forwardDirection设置前的方向,通过设置SetLookAt的第二个参数forwardDirection 来实现,例如:
SetLookAt(0,Vector3.right)
三、改模型的前向坐标
这种方式应该得需要建模的人员帮忙,不帮的话找领导协调一下了。
深入分析 查看源码查看插件的源码可以看到:
public static TweenerCore SetLookAt(this TweenerCore t, Transform lookAtTransform, Vector3? forwardDirection = null, Vector3? up = null);
public static TweenerCore SetLookAt(this TweenerCore t, Vector3 lookAtPosition, Vector3? forwardDirection = null, Vector3? up = null);
public static TweenerCore SetLookAt(this TweenerCore t, float lookAhead, Vector3? forwardDirection = null, Vector3? up = null);
有以上三种重载。第一个参数有 Transform ,Vector3 和float ,三种类型,前两个好理解,就是看向一个对象和看向一个位置点。
最后一个的说明是: lookAhead: //要使用的前向百分比(0到1)
这个看向前方的百分比,其实就是看朝路径方向的百分比映射成0–1的区间。
小疑问按上面的说明,应该是100%看向路径才是看向路径也就是说 SetLookAt(1)才是看向路径,难道网上的说法 SetLookAt(0)看向路径是错的?
测试SetLookAt( 0 – 1)这里是通过一个方块和一个球,通过设置球的偏移给出对象的前方向。
### 不设置SetLookAt
if (Input.GetKeyUp(KeyCode.A)) {
doObj.DOPath(wps, dura).SetEase(Ease.Linear);
}
不会看向路径,方向也不会变
### SetLookAt(0)
if (Input.GetKeyUp(KeyCode.A)) {
doObj.DOPath(wps, dura).SetLookAt(0).SetEase(Ease.Linear);
}
会看向路径移动
### SetLookAt(1)
if (Input.GetKeyUp(KeyCode.A)) {
doObj.DOPath(wps, dura).SetLookAt(1).SetEase(Ease.Linear);
}
也会看向路径移动! 效果同“SetLookAt(0)”
### SetLookAt(0.5f)
if (Input.GetKeyUp(KeyCode.A)) {
doObj.DOPath(wps, dura).SetLookAt(0.5f).SetEase(Ease.Linear);
}
也会看向路径移动!!! 效果同“SetLookAt(0)”
改成其他的参数也也会看向路径移动。
DOPath.SetLookAt结论经过测试发现不过设置0--1区间的任何数据,都会看向路径移动。 不知是不是还有别的关联?