您当前的位置: 首页 >  unity

十幺卜入

暂无认证

  • 2浏览

    0关注

    119博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity3d Dotween DOPath 设置了SetLookAt物体未看向路径的各种问题

十幺卜入 发布时间:2021-03-10 13:27:47 ,浏览量:2

Unity3d Dotween DOPath 设置了SetLookAt(0)物体未看向路径的各种问题
  • 存在问题
  • 解决办法
    • 一、外套节点修正
    • 二、设置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区间的任何数据,都会看向路径移动。 不知是不是还有别的关联?

关注
打赏
1663314737
查看更多评论
立即登录/注册

微信扫码登录

0.0991s