SCNAction.rotateByAngle 旋转在 El Capitan 或 Metal 中反转

Posted

技术标签:

【中文标题】SCNAction.rotateByAngle 旋转在 El Capitan 或 Metal 中反转【英文标题】:SCNAction.rotateByAngle rotation is inverted in El Capitan or Metal 【发布时间】:2016-01-27 11:46:21 【问题描述】:

在我的游戏中使用 SCNAction.rotateByAngle(...) 我会按左/右/上/下键或滑动以使对象沿该方向旋转。但是在 El Capitan 上或使用 Metal 作为渲染器测试我的游戏会导致 3D 对象以另一种方式旋转,即左变为右,上变为下。

我没有找到任何文档提到在 El Capitan 或 Metal 中旋转是“反转”或“反转”的。

代码是:

Rotate up = SCNVector3(x:1, y:0, z:0)
Rotate down = SCNVector3(x:-1, y:0, z:0)
Rotate left = SCNVector3(x:0, y:1, z:0)
Rotate right = SCNVector3(x:0, y:-1, z:0)
SCNAction.rotateByAngle(CGFloat(M_PI_2), aroundAxis:vector, duration:1)

非常简单直接。

任何线索为什么会发生这种情况?

我是否应该检查正在运行的操作系统或 Metal,然后应用正确的旋转?

谢谢

【问题讨论】:

【参考方案1】:

在 Apple 开发者论坛中,一位 Apple 员工已经证实了这一点。

Apple Developer Forum question & answer

这是对的。 rotateByAngle 的行为错误(倒置) 在 10.11 和 ios9 之前,现在已修复。向后兼容性 确保(在 iOS9 / 10.11 之前链接的应用程序将继续 运行相同)。如果您正在构建一个新应用程序并使用它 API 并希望支持以前的版本,那么是的,您将不得不 检查您正在运行的操作系统的版本。另一种选择是使用 “rotateByX:y:z:duration:”变体。

【讨论】:

以上是关于SCNAction.rotateByAngle 旋转在 El Capitan 或 Metal 中反转的主要内容,如果未能解决你的问题,请参考以下文章

旋转回纵向时视口缩放中断

如何将页面旋转为横向,页面内容应为纵向 iTextpdf

自动将肖像倒置旋转为iphone X的肖像?

AVPlayer 将纵向视频旋转为横向

text 旋转圈在progress.pde

为啥我的矩阵旋转会在 OpenGL 中倒退