Вы обычно не подклассифицируете сцену для таких случаев, как этот. Скорее всего, вы хотите сделать босса подклассом SKSpriteNode
и добавить его в свою сцену. Хотя, вероятно, есть десятки способов создать подкласс, это всего лишь один из способов.
Также стоит отметить, что обычно не принято писать имена переменных с заглавной буквы, классы — да, переменные — нет.
class Boss: SKSpriteNode {
init() {
let texture = SKTetxure(imageNamed: "boss1")
super.init(texture: texture , color: .clear, size: texture.size())
zPosition = 2
//any other setup such as zRotation coloring, additional layers, health etc.
}
}
...тем временем в GameScene
class GameScene: SKScene {
let boss1: Boss!
override func didMove(to view: SKView) {
boss1 = Boss()
boss1.position = CGPoint(x: size.width * 0.1, y: size.height * 0.5)
self.gameScene.addChild(boss1)
}
}
в GameScene вы создаете экземпляр нового класса, размещаете его и добавляете в GameScene.
редактировать
функция init имеет короткий путь в swift.
Boss()
такой же как
Boss.init()
вы также можете добавить пользовательские параметры в свой init, чтобы уточнить или добавить дополнительные функции в ваш класс. Например...
class Boss: SKSpriteNode {
private var health: Int = 0
init(type: Int, health: Int, scale: CGFloat) {
let texture: SKTetxure!
if type == 1 {
texture = SKTetxure(imageNamed: "boss1")
}
else {
texture = SKTetxure(imageNamed: "boss2")
}
super.init(texture: texture , color: .clear, size: texture.size())
self.health = health
self.setScale(scale)
zPosition = 2
//any other setup such as zRotation coloring, additional layers, health etc.
}
}
person
Ron Myschuk
schedule
13.03.2018