In questa lezione vedremo brevemente come implementare le classi che rappresentano i due principali elementi con cui Mouse interagirà durante il gioco: le monete ed i blocchi, rispettivamente rappresentati dalle classi Coin
e Block
.
La classe Coin
Questa classe rappresenta lo sprite della moneta che appare dal lato destro dello schermo e scorre verso sinistra, fino a uscire dallo schermo.
Dovremo far sì che, ogni volta che Mouse intercetterà una moneta, questa scompaia, e che il punteggio venga incrementato di un punto.
Creiamo il file Coin.swift e sovrascriviamolo con il seguente sorgente:
import SpriteKit
class Coin: SKSpriteNode {
init() {
let texture = SKTexture(imageNamed: "object_coin")
super.init(texture: texture, color: .clear, size: texture.size())
let physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
physicsBody.contactTestBitMask = 1
self.physicsBody = physicsBody
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Si tratta di una classe piuttosto semplice. Tutta la logica è nell’inizializzatore, che ha il compito di caricare l’immagine della moneta, creare la texture ed applicarla allo sprite corrente.
Inoltre, viene anche definito un corpo fisico per questo sprite che useremo per rilevare la collisione.
La classe Block
Questa classe è simile alla precedente, ma rappresenta un blocco che Mouse dovrà evitare.
Creaiamo quindi il file Block.swift e sovrascriviamolo con il seguente codice:
import SpriteKit
class Block: SKSpriteNode {
init() {
let texture = SKTexture(imageNamed: "block_stone")
super.init(texture: texture, color: .clear, size: texture.size())
let physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
physicsBody.contactTestBitMask = 1
self.physicsBody = physicsBody
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}