Swift SpriteKit 在 x 轴上旋转节点
Posted
技术标签:
【中文标题】Swift SpriteKit 在 x 轴上旋转节点【英文标题】:Swift SpriteKit Rotate Node at x-axis 【发布时间】:2017-02-12 18:53:41 【问题描述】:我正在关注本教程(我认为它是用 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 轴上旋转节点?
感谢和问候
【问题讨论】:
【参考方案1】:您可以从 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)
【讨论】:
【参考方案2】:不,不可能,SpriteKit 是 2d 的。您应该查看 3d 的 SceneKit。 https://developer.apple.com/reference/scenekit
【讨论】:
感谢您的回复。我看过 SceneKit,但对我来说它太复杂了。 :'( 我已经尝试了 3 个小时来在 SceneKit 中获得这个网格 - 我无法创建它..(哦,使用 cameraNode 让我发疯 - 啊)以上是关于Swift SpriteKit 在 x 轴上旋转节点的主要内容,如果未能解决你的问题,请参考以下文章