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

Unity3D使用DOTween的DOLocalRotate 和DORotateQuaternion 旋转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轴即可。

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

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值