转换场景精灵套件
问题描述:
我无法转换到预定位置在不同的场景。 (例如,当马里奥进入隧道时,他回到原来的场景,他离开了)我能够编码的方式来到下一个场景,但节点不会出现,我希望它。转换场景精灵套件
这是我的代码过渡到第二个场景
func didBeginContact(contact: SKPhysicsContact) {
_ = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
if (contact.bodyA.categoryBitMask == BodyType.cup.rawValue && contact.bodyB.categoryBitMask == BodyType.ball.rawValue) {
touchmain()
} else if (contact.bodyA.categoryBitMask == BodyType.ball.rawValue && contact.bodyB.categoryBitMask == BodyType.cup.rawValue) {
touchmain()
}
}
func touchmain() {
let second = GameScene(fileNamed:"GameScene")
second?.scaleMode = .AspectFill
self.view?.presentScene(second!, transition: SKTransition.fadeWithDuration(0.5))
}
我真的很感激,如果你们能帮助一个年轻的开发出来。非常喜欢!
答
有很多方法可以解决这个问题。一般的要点是,在离开现场之前只记得“马里奥的”位置,并将它传递给下一个场景中的一个物业。 (或者您可以使用委托获取信息)
如果场景是他在SceneA(主级别)传输到SceneB(小型货币通道)然后返回到SceneA(主级别)的场景中,您可以通过位置到SceneB并在SceneB中有一个存储Mario所在位置的属性。然后,当你驱车返回SceneA只是传递的财产返回到SceneA属性和位置马里奥和SceneA相应
func touchmain() {
let marioPos: CGPoint = Mario.position
let second = GameScene(fileNamed:"GameScene")
second.startingPos = marioPos
second?.scaleMode = .AspectFill
self.view?.presentScene(second!, transition: SKTransition.fadeWithDuration(0.5))
}
答
您可以使用SKScene的userData
领域记住的位置:
某处第一现场的init,这样做:
userData = [String : NSObject]()
而且,在你的第一个场景,我们要根据您的用户数据覆盖didMove(to:SKView)
设置马里奥位置:
override func didMove(to:SKView)
{
super.didMove(to:to)
if let position = self.userData["position"]
{
mario.position = position
}
}
然后,我们要以实际分配的用户数据转移带离现场时:
func touchmain() {
if let userData = self.userData
{
userData["marioPosition"] = mario.position
}
if let second = GameScene(fileNamed:"GameScene")
{
second.scaleMode = self.scaleMode //I assume we do not want to change scaleMode between scenes
second.userData = userData
self.view?.presentScene(second, transition: SKTransition.fadeWithDuration(0.5))
}
else
{
print("Error creating Second scene")
}
}
当我们回来了,我们要的userData
转移回第一个画面。这是我前面提到的didMove
进场,这将把马里奥的位置设置到先前的位置。
...我没有看到这个代码,所以尽量并将其应用到怎么过你正在做它
func touchBackToFirst() {
if let first = GameScene(fileNamed:"GameScene")
{
first.scaleMode = self.scaleMode
first.userData = userData
self.view?.presentScene(first, transition: SKTransition.fadeWithDuration(0.5))
}
else
{
print("Error creating Firstscene")
}
}