您当前的位置: 首页 >  unity

十幺卜入

暂无认证

  • 3浏览

    0关注

    119博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity3D使用DOTween的DOLocalRotate和DORotateQuaternion 旋转X轴的问题

十幺卜入 发布时间:2021-01-14 13:59:39 ,浏览量:3

Unity3D使用DOTween的DOLocalRotate 和DORotateQuaternion 旋转X轴的问题
  • 使用DOLocalRotate实现
  • 设置RotateMode
  • 使用DORotateQuaternion 旋转X轴
  • 尝试旋转Y|Z轴
  • 结论
  • 旋转X轴的方法

使用DOLocalRotate实现

代码如下:

using UnityEngine;
using DG.Tweening;
public class rotetest : MonoBehaviour
{
    bool isRotAble = true;
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.W) && isRotAble) {
            isRotAble = false;
            Vector3 endv = transform.localEulerAngles + new Vector3(90, 0, 0);
            Debug.Log("transform.localEulerAngles:" + transform.localEulerAngles);
            transform.DOLocalRotate(endv, 1).OnComplete(() => {
                    isRotAble = true;
                Debug.Log("endv:"+ endv + "   done:" + transform.localEulerAngles);
            });
        }
    }
}

旋转x轴时,会来回旋转: 在这里插入图片描述

查看日志可以看出,transform.localEulerAngles(180,0,0)被转换为:(0.0, 180.0, 180.0),之后就是来回旋转 在这里插入图片描述

设置RotateMode

RotateMode的坑点常用DOTween插件的应该都知道,旋转不正常很多时候都是未设置RotateMode,默认Fast,尝试设置一下试试。

DOLocalRotate(endv, 1, RotateMode.FastBeyond360)//DOLocalRotate(endv, 1);新增RotateMode参数

效果同上

使用DORotateQuaternion 旋转X轴
using UnityEngine;
using DG.Tweening;
public class rotetest : MonoBehaviour
{
    bool isRotAble = true;
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.W) && isRotAble) {
            isRotAble = false;
            Quaternion endv = Quaternion.Euler(transform.localEulerAngles + new Vector3(90, 0, 0));
            Debug.Log("transform.localEulerAngles:" + transform.localEulerAngles);
            transform.DOLocalRotateQuaternion(endv, 1).OnComplete(() => {
                isRotAble = true;
                Debug.Log("endv:"+ endv + "   done:" + transform.localEulerAngles);
            });
        }
    }
}

效果也一样

尝试旋转Y|Z轴

旋转Y轴:

 Quaternion endv = Quaternion.Euler(transform.localEulerAngles + new Vector3(0, 90, 0));

可以正常旋转: 在这里插入图片描述

结论

不管是DORotateQuaternion 方法还是DOLocalRotate都无法正常持续旋转X轴,而YZ轴的旋转都正常。

感觉是DOTween插件的bug?具体原因不得而知。。。。。

望知道的大佬指点!!!

旋转X轴的方法

在旋转对象的外层新增个节点,将旋转对象通过设置rotation进行旋转,将旋转的对象的X轴对准外层节点的YZ轴,然后旋转外层节点的YZ轴即可。

有更多好的方法欢迎大家分享!

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

微信扫码登录

0.0811s