4
我正在用3种不同的SKScenes(scene1,scene2,scene3)开发游戏。在GameViewController我初始化所有的人都像这样:如何正确使用Swift在SpriteKit中切换SKScenes?
class GameViewController: UIViewController {
var hero = Hero()
var skView: SKView!
var scene1: SKScene!
var scene2: SKScene!
var scene3: SKScene!
override func viewDidLoad() {
super.viewDidLoad()
// init scenes
scene1 = SKScene(size: view.bounds.size, hero: hero)
scene2 = SKScene(size: view.bounds.size, hero: hero)
scene3 = SKScene(size: view.bounds.size, hero: hero)
scene1.scaleMode = .AspectFill
scene2.scaleMode = .AspectFill
scene3.scaleMode = .AspectFill
// set view
skView = self.view as SKView
// present the first scene
skView.presentScene(scene1)
}
我的想法是在第一和现在以后提出的第一个场景(开关等来)其他场景(即当英雄强)。在每个场景中,英雄精灵都是这样添加的:
func addHero() {
let heroSprite = SKSpriteNode(imageNamed: "hero")
hero.sprite = heroSprite
heroSprite.position = CGPoint(x: size.width/4, y: size.height/2)
addChild(heroSprite)
}
而在更新方法中,通过触摸来更新英雄位置。
func update() {
if touching {
hero.position++
}
}
英雄职业是这样的:
class Hero {
var sprite: SKSpriteNode?
}
的问题是: 主人公是可移动的,当只第一现场(SCENE1)初始化接触。这意味着,英雄不能再使用上面的代码移动。
任何人都可以给我一些建议我做错了什么?提前致谢!
PS:完整的代码可以在Github找到。
您可以将您的更新功能,也应该使用触摸移动功能通过触摸来移动你的精灵。 – 2014-10-07 07:08:53
是的,update()函数非常简单。我编辑了这篇文章。我正在思考3个场景在初始化时发生了什么。他们都在同一时间运行,还是只有在提交时才运行? – Sifeng 2014-10-07 09:18:57
你究竟什么时候提出你的下一个场景,例如:在同一个函数中,在另一个函数中还是在另一个类中? – 2014-10-07 20:23:55