SpriteKit SKAction 自定义旋转随时间不连续

问题描述

我想创建一个自定义 SKAction 以便能够围绕 x 和 y 轴旋转 SKNode,所以我使用了一个 SKTransformNode,它允许它的孩子在 3D 中旋转.围绕 x 或 y 轴旋转工作正常(使用 xRotateyRotate 属性),但我希望能够同时围绕 x 和 y 轴旋转节点,为此我使用setRotationMatrix(matrix_float3x3) 方法。我计算旋转矩阵,将其传递给 setRotationMatrix 方法,这里是事情变得奇怪的地方:当我使用 SKTransformNode 方法向矩阵询问 rotationMatrix() 时,后面的行,我没有得到我刚刚设置的完全相同的矩阵。甚至有一个时刻 Rx 向量被重置,导致不良动画与间隙和沿 x 轴的重置,如这些图片所示:

Start -> Rotation's OK -> Rotation gets really wrong

这是设置和显示值的方法的一部分:

print("angle: \(angle)\tcos: \(c)\tsin: \(s)")
print("dRot matrix: \(dRot)")
node.setRotationMatrix(dRot)
print("node matrix: \(node.rotationMatrix())")

这里是直到 Rx 向量被重置的结果(不同的矩阵由 SpriteKit 计算给定动画的持续时间(此处为 0.05 秒)以达到 60fps):

angle: 0.0  cos: 1.0    sin: 0.0
dRot matrix: simd_float3x3([[1.0,0.0,0.0],[0.0,1.0,1.0]])
node matrix: simd_float3x3([[1.0,1.0]])
angle: 0.6962278    cos: 0.76726687 sin: 0.641328
dRot matrix: simd_float3x3([[0.88363343,0.320664],0.88363343,-0.320664],[-0.320664,0.320664,0.76726687]])
node matrix: simd_float3x3([[0.9418167,0.058183298,0.32066402],[0.058183298,0.9418167,-0.32066402],[-0.32066402,0.32066402,0.8836334]])
angle: 1.3957837    cos: 0.1741206  sin: 0.98472434
dRot matrix: simd_float3x3([[0.58706033,0.49236217],0.58706033,-0.49236217],[-0.49236217,0.49236217,0.1741206]])
node matrix: simd_float3x3([[0.79353017,0.20646983,[0.20646983,0.79353017,0.58706033]])
angle: 2.0849395    cos: -0.49178895    sin: 0.8707144
dRot matrix: simd_float3x3([[0.2541055,0.4353572],0.2541055,-0.4353572],[-0.4353572,0.4353572,-0.49178895]])
node matrix: simd_float3x3([[0.6270528,0.3729472,0.43535718],[0.3729472,0.6270528,-0.43535718],[-0.43535718,0.43535718,0.2541056]])
angle: 2.0954423    cos: -0.50090665    sin: 0.86550134
dRot matrix: simd_float3x3([[0.24954668,0.43275067],0.24954668,-0.43275067],[-0.43275067,0.43275067,-0.50090665]])
node matrix: simd_float3x3([[1.0,0.2495467,-0.43275064],0.43275064,0.2495467]])

如您所见,set 和 get 之间的值永远不会完全相同(除了开头),并且在最后一帧 Rx 向量变得非常错误:[1.0,0.0] 而不是 {{1} }!

你知道为什么我没有得到我刚刚设置的相同矩阵吗?最重要的是,为什么我最后得到了这个糟糕的值?

这里是完整的方法:

[0.24954668,0.43275067]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...