Iniziamo a lavorare sulla classe GameScene
per poter eseguire il gioco man mano che lo costruiamo. Prima di tutto apriamo il file GameScene.sks, clicchiamo col tasto destro sull’elemento helloLabel e selezioniamo la voce Delete.
Si tratta di un oggetto di classe SKLabelNode
, aggiunta di default da Xcode quando creiamo un progetto SpriteKit; l'abbiamo eliminata perchè non ne avremo bisogno.
Apriamo quindi il file GameScene.swift e sovrascriviamolo con il seguente codice:
import SpriteKit
class GameScene: SKScene {
private var mouse: Mouse!
override func didMove(to view: SKView) {
startGame()
}
private func startGame() {
mouse = Mouse(gameScene: self)
mouse.position = CGPoint(x: -frame.width / 4, y: frame.midY)
addChild(mouse)
self.physicsWorld.gravity = .zero
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
mouse.fly()
}
func didDie() {
}
}
Non appena la scena viene presentata nella view, SpriteKit invocherà il metodo didMove()
:
override func didMove(to view: SKView) {
startGame()
}
Al suo interno viene invocato startGame()
, che a sua volta crea l’oggetto Mouse
e lo aggiunge alla scena.
Ogni volta che l'utente tocca lo schermo, SpriteKit si occupa, inoltre, di eseguire il metodo seguente:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
mouse.fly()
}
Nel nostra caso, utilizzeremo il metodo touchesBegan
per comunicare a Mouse che deve avviare la sequenza di animazioni relative all’accensione del razzo che lo spingeranno in alto.
Si noti, inoltre, che al momento abbiamo definito un metodo vuoto chiamato didDie()
; ciò è necessario per far sì che il progetto possa essere compilato correttamente.
Possiamo ora avviare il gioco sul simulatore, utilizzando la combinazione di tasti CMD + R. Toccando lo schermo, vedremo che il razzo di Mouse si accenderà, ed il nostro personaggio salità verso l'alto per poi ricadere, come mostrato nella GIF seguente.