文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

解决unity rotate旋转物体 限制物体旋转角度的大坑

2024-04-02 19:55

关注

今天可是遇到一个很简单的需求,但是却让我蛋疼了半天。

滑动屏幕控制物体旋转,但是旋转的角度要在-60到60之间。

乍一听这简直是小儿科啊。

判断一下角度不就行了。相比这四元数,欧拉角虽然有时会出现万向锁,但是简洁明了啊。

这不,我就中了一个简洁明了的大坑。

图中,如果你以为transform.eulerAngles =(-1,0,90)

那就大错特错了。

因为对于旋转来说。360度是一个循环。-1° 也可以算是就是359°

而且unity就是这样认为的。面板上虽然显示的是-1。但是他运行时是359。

这就让我的判断出了问题。


 if(angle>60)
 
 transform.eulerAngles = new Vector3(60, transform.eulerAngles.y, transform.eulerAngles.z);
 if(angle<-60)
 
 transform.eulerAngles = new Vector3(-60, transform.eulerAngles.y, transform.eulerAngles.z);

这样你就会发现 你的物体处并不受控制,有时候还会出现一种奇葩的状态。

因为当x的值小于0后,他又变回359了。这样又走到第一个if里面了。

那要怎么办呢。解决方法就是:你不是负数 我把你变成负数。


 public float CheckAngle(float value)
 {
 float angle = value - 180;
 
 
 if (angle > 0)
 return angle - 180;
 
 
 return angle + 180;
 }

通过这个方法,将他的角度在变回负数。

可以看到 图中 x的值是-26但是输出实际上是333。经过方法的转换才能成为显示的值。

这样就可以计算了。

2011年就有人提出这个问题了。在官方论坛下2016年还有回答。看来真是坑了不少人。

补充:Unity RotateAround固定旋转

当前显示的为本地坐标系


//旋转视野
void rotateVeiw()
{
float x=Input.GetAxis("Mouse X");
float y=Input.GetAxis("Mouse Y");
//函数参数(旋转点,旋转轴,旋转量)

旋转效果相当于旋转轴平移到旋转点上后 沿此轴旋转相应的量。

例上图,如果沿本地坐标的Y轴旋转 则会出现旋转偏移到地下的情况。

必须使用下式 沿世界坐标的y轴旋转


transform.RotateAround(plear.position,Vector3.up,x);

当单纯的左右旋转时,x轴都为固定的,所以没有区别。

但当左右移动后,本地坐标的x轴和世界坐标的x轴有出入。

例如:此时如果选用世界坐标x轴,则左右移动后的x轴还是固定的,左右移动移动一定的量后

世界就会开始倾斜:如下图所示:

所以此时我们应采用 本地坐标轴x


transform.RotateAround(plear.position, transform.right, y);
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯