1
我想创建一个马里奥风格的旋转平台,保持水平。斯威夫特SpriteKit马里奥风格旋转平台,保持水平
我迄今所做的是创建一个简单的类用于测试目的。
class PlatformRound: SKNode {
let platform: Platform
// MARK: - Init
init(barSize: CGSize, color: SKColor, pos: CGPoint) {
/// Base
let base = SKShapeNode(circleOfRadius: 6)
//base.name = Platform.Name.normal
base.fillColor = SKColor.darkGrayColor()
base.strokeColor = base.fillColor
base.position = pos
let rotatingAction = SKAction.rotateByAngle(CGFloat(-M_PI), duration: 8)
base.runAction(SKAction.repeatActionForever(rotatingAction))
/// Bar
let bar = Platform(size: barSize, color: color, pos: CGPointMake(0, 0 - (barSize.height/2)), ofType: .Normal)
bar.zPosition = -200
/// Platform that supposed to stay horizontal
let platformSize = CGSizeMake(40, GameplayConfig.World.platformHeight)
let platformPos = CGPointMake(0, 0 - (bar.size.height/2))
platform = Platform(size: platformSize, color: color, pos: platformPos, ofType: .Normal)
super.init()
addChild(base)
base.addChild(bar)
bar.addChild(platform)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我正在创建一个我可以旋转的roundBase。我比创建一个从基地落下的酒吧,这是添加到基节点。最后,我创建了一个应该始终保持水平的平台。 我正在使用另一个Platform子类来创建栏和平台,但它们与此问题无关。
如何使平台保持水平。我尝试了下面的工作。
1)在我gameScene更新我不断更新的平台位置或zRotation
platformRound.platform.zRotation = ...
2)创建一旦平台被添加时设置比使用性能不断更新zRotation一个zRotation属性。
3)试图玩弄physicsJoints
我肯定有,我缺少一个简单的方法。我将不胜感激任何帮助。
你在说这个https://www.youtube.com/watch?v=Igjf-W87bW4还是? – Whirlwind
嘿,谢谢你的回复。那正是我所说的。 – crashoverride777
这应该是*容易*。尽管如此,如果添加创建PlatformRound实例的代码部分以及围绕圆周旋转的代码(如果你这样做的话),这将会很有帮助。或者我可以用'SKSpriteNodes'来给你一个简单的例子,但你可能需要修改它以适应你当前的设置。 – Whirlwind