Swift SpriteKit在x轴旋转节点

时间:2017-02-12 18:53:42

标签: swift sprite-kit rotation skspritenode skshapenode

我正在学习本教程(我认为它是用JavaScript编写的):3D Terrain

我在Swift中使用SpriteKit尝试它,但是在x轴上旋转有问题。

所以这就是教程中的样子: image from Tutorial

这就是我现在所处的位置: enter image description here

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

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)

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

SpriteKit中是否还有一种方法可以在x轴上旋转节点?

谢谢和最好的问候

2 个答案:

答案 0 :(得分:1)

不,这是不可能的,SpriteKit是2d。你应该看看SceneKit for 3d。 https://developer.apple.com/reference/scenekit

答案 1 :(得分:0)

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

let t = SKTransformNode()
t.addChild(someNode)
scene.addChild(t)
t.xRotation = CGFloat.pi // tilts someNode by 180 degrees

您还可以像这样为更改设置动画。

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)