我正在学习本教程(我认为它是用JavaScript编写的):3D Terrain
我在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)
现在我想将它旋转一定程度,但我只能在z轴而不是x轴旋转它。
SpriteKit中是否还有一种方法可以在x轴上旋转节点?
谢谢和最好的问候
答案 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)