Swift SpriteKit 在 x 轴旋转节点

aig*_*tti 4 rotation sprite-kit skspritenode skshapenode swift

我正在关注本教程(我认为它是用 JavaScript 编写的):3D 地形

我在 Swift 中尝试使用 SpriteKit,但在 x 轴旋转时遇到问题。

这就是教程中的样子: 图片来自教程

这就是我现在的处境: 在此输入图像描述

我用以下代码创建了这个网格:

var shapePoints = [CGPoint]()
for i in 0...zeilen+1{
    for j in 0...spalten{
        shapePoints.append(CGPoint(x: zellenGroesse*j, y: zellenGroesse*i))
        shapePoints.append(CGPoint(x: zellenGroesse*j, y: zellenGroesse*(i+1)))
    }
}
let fertigeShape = SKShapeNode(points: &shapePoints, count: shapePoints.count)
self.addChild(fertigeShape)
Run Code Online (Sandbox Code Playgroud)

现在我想将其旋转一定角度,但我只能在 z 轴上旋转它,而不能在 x 轴上旋转它。

SpriteKit 中有没有办法也可以在 x 轴上旋转节点?

谢谢并致以诚挚的问候

Pet*_*ker 8

从 iOS11 开始,您可以使用所谓的 SKTransformNode。当您想要对节点进行 3D 透视倾斜时,请将其作为子节点添加到 SKTransformNode,然后设置其 xRotation 或 yRotation(以弧度为单位的值)。

let t = SKTransformNode()
t.addChild(someNode)
scene.addChild(t)
t.xRotation = CGFloat.pi // tilts someNode by 180 degrees
Run Code Online (Sandbox Code Playgroud)

您还可以为更改设置动画,如下所示。

let degrees: CGFloat = 20
let radians = CGFloat.pi / 180 * degrees
let duration = 2.0
let tilt = SKAction.customAction(withDuration: duration) { (node, elapsed) in
    let percent = elapsed / CGFloat(duration)
    t.xRotation = percent * radians
}
tilt.timingMode = .easeOut
t.run(tilt)
Run Code Online (Sandbox Code Playgroud)