发布时间:2023-05-11 18:00
代码如下:
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);
});
}
}
}
查看日志可以看出,transform.localEulerAngles(180,0,0)被转换为:(0.0, 180.0, 180.0),之后就是来回旋转
RotateMode的坑点常用DOTween插件的应该都知道,旋转不正常很多时候都是未设置RotateMode,默认Fast,尝试设置一下试试。
DOLocalRotate(endv, 1, RotateMode.FastBeyond360)//DOLocalRotate(endv, 1);新增RotateMode参数
效果同上
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轴:
Quaternion endv = Quaternion.Euler(transform.localEulerAngles + new Vector3(0, 90, 0));
不管是DORotateQuaternion 方法还是DOLocalRotate都无法正常持续旋转X轴,而YZ轴的旋转都正常。
感觉是DOTween插件的bug?具体原因不得而知。。。。。
望知道的大佬指点!!!
在旋转对象的外层新增个节点,将旋转对象通过设置rotation进行旋转,将旋转的对象的X轴对准外层节点的YZ轴,然后旋转外层节点的YZ轴即可。
有更多好的方法欢迎大家分享!
2020考研计算机专业考题,2020计算机408的考研试卷难度如何
truffle (ETH以太坊智能合约集成开发工具) 入门教程
yolov5训练自己的数据集,零基础小白都能看得懂的教程。YOLOv5 实现目标动态实时检测(训练自己的数据集实现王者荣耀游戏中的识别)yolov5/yolov4/yolov3/>>>>>第二章
【论文笔记_计算机视觉_2022】Online Convolutional Re-parameterization
本周二晚19:00战码先锋第5期直播丨深入理解OpenHarmony系统启动,轻松踏上设备软件开发之旅
大数据毕设题目推荐 - 最新大数据毕设选题 - 毕业设计项目方向课题
【Xilinx Vivado时序分析/约束系列5】FPGA开发时序分析/约束-IO时序分析