3 つの異なる SKScenes (scene1、scene2、scene3) を使用してゲームを開発しています。GameViewController では、次のようにすべてを初期化します。
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にあります。