Unity使用transform.Rotate进行三维旋转角度出现偏差
Unity使用transform.Rotate进行三维旋转角度出现偏差
情形
最开始遇到该问题的情况比较复杂,另写了一个例子。情形如下:
一个立方体上挂载脚本:
transform.Rotate(25, 45, 30);
效果十分正常:
改一下代码:
transform.Rotate(-25, 0, 0);
transform.Rotate(0, -45, 0);
transform.Rotate(0, 0, -30);
结果变成了:
原因
transform.Rotate(x, y, z)方法不是在物体的三个旋转角度上分别加x, y, z,而是根据我们给出的三个角度,寻找一个合适的轴,旋转相应的角度。所以当分三次进行旋转时,第三次旋转会影响前两次已经转出来的角度。(大概就是转一根歪着的笔就不是沿着中轴转了)
解决方法
别分开旋转,除非角度是多少无所谓。如果想在物体的三个旋转角度上加减指定数值,可以使用
transform.localEulerAngles = new Vector3(transform.localEulerAngles.x + dx, transform.localEulerAngles.y + dy, transform.localEulerAngles + dz);
transform.localEulerAngles也不可以单独设置某一个值,必须整个Vector3传入。
或者实在是想分开旋转,可以使用
transform.Rotate(-25, 0, 0, Space.World);
transform.Rotate(0, -45, 0, Space.World);
transform.Rotate(0, 0, -30, Space.Self);
我试了试,是可以转出来(-25, -45, -30)的角度的。如果想保证一个物体的某一方向转动和其他的分开,(比如人转身不受身体歪成啥样影响)也是一种可行的方法。
Unity使用transform.Rotate进行三维旋转角度出现偏差的更多相关文章
- 通过js获取元素css3的transform rotate旋转角度方法
我们再试用jquery获取样式的时候是通过$('domName').css('transform'):的方式来获取元素的css样式,但是通过它获取到的css3的transform属性是以矩阵的方式呈现 ...
- 使用input range滑块,控制元素transform rotate旋转样式
<!DOCTYPE html> <html> <head> </head> <body> <!-- 第一步:设置div旋转对象和inp ...
- transform:rotate()将元素进行不同角度的旋转
通过设置transform:rotate()可以将元素进行不同角度的旋转: 下面是一些测试代码: <!DOCTYPE html> <html> <head> < ...
- transform:rotate在手机上显示有锯齿的解决方案大全
先来个兼容性说明,洗洗脑: div{transform:rotate(7deg);-ms-transform:rotate(7deg); /* IE 9 */-moz-transform:rotate ...
- 拒绝IE8-,CSS3 transform rotate旋转动画效果(支持IE9+/chrome/firefox)
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta nam ...
- transform:rotate在手机上显示有锯齿的解决方案
transform:rotate 属于简单好用的效果,但在手机上显示时,会有比较明显锯齿. 解决方案也很简单, 利用外层容器的overflow:hidden 加上图片margin:-1px 就可以解决 ...
- 用css3动画 @keyframes里设置transform:rotate(); 控制动画暂停和运动用属性:animation-play-state:paused暂停,在微信和safari里设置paused无效,在QQ里是正常的
这几天遇到了两个很奇葩的问题,终于找到原因,趁还记得解决方法,赶紧记下来: 用css3动画 @keyframes里设置transform:rotate(); 控制动画暂停和运动可以用属性:animat ...
- css 调转180度:transform: rotate(180deg);
css 调转180度:transform: rotate(180deg);
- transform:rotate/旋转
<!DOCTYPE html> <html> <head> <style> div { width:100px; height:75px; backgr ...
随机推荐
- 如何使用捷映App制作朋友圈九宫格视频图片合集
在刷朋友圈的过程中,看到九宫格的视频图片合集,带有酷炫的音效和动效,展现效果非常好,那么我们该如何制作呢?下面我为大家介绍. 第一步,我们需要在各大应用市场搜索[捷映视频制作]App,点击[安装]. ...
- 微信小程序新闻网站列表页
在app.json中可以设置所有文件的头部导航颜色 (是window属性的子属性) 在具体页面可以单独设置该页面的导航颜色 (直接写该属性,不需要写window属性) 查看官方文档,可以看到好多全局属 ...
- 《Google软件测试之道》 第一章google软件测试介绍
前段时间比较迷茫,没有明确的学习方向和内容.不过有一点应该是可以肯定的:迷茫的时候就把空闲的时间用来看书吧! 这本书,目前只是比较粗略的看了一遍,感触很大.以下是个人所作的笔记,与原文会有出入的地方. ...
- 9_Palindrome Number
9.Palindrome Number Determine whether an integer is a palindrome. An integer is a palindrome when it ...
- ES6--正则表达式
创建正则表达式规则的四种方法 var regex = new RegExp('xyz', 'i'); var regex = new RegExp(/xyz/i); var regex = new R ...
- 最长公共子串算法(Longest Common Substring)
给两个字符串,求两个字符串的最长子串 (例如:"abc""xyz"的最长子串为空字符串,"abcde"和"bcde"的最 ...
- 基于 .NET 的 FluentValidation 数据验证
学习地址:官方文档,更多更详细的内容可以看官方文档. FluentValidation 是一个基于 .NET 开发的验证框架,开源免费,而且优雅,支持链式操作,易于理解,功能完善,还是可与 MVC5. ...
- 使用flexbox的自适应照片布局
作者:Tim Vam Damme 让我们来看看一种超轻量级的方法,它可以为一组任意大小的照片创建水平砖砌效果.将任何照片丢到上面,它们将边对边无缝对齐. 该解决方案不仅轻巧,而且非常简单.我们将使用无 ...
- Linux踩坑之云服务器 ssh 连接不上
前奏:今天没事处理一下之前远程不了Linux桌面的问题时,找到一个解决方法(开始入坑): systemctl set-default graphical.tar ...
- python之 socketserver模块的使用
在我们正常的使用socket模块来写一个server的程序就会显得比较的复杂通常一般流程为 1.生成socket实例对象 2.绑定地址 3.开始监听 4.接收数据 一般demo为 # 服务器 impo ...