如何在 gameScene 上添加来自另一个 class 的精灵
How to add a sprite from another class on the gameScene
谁能解释一下如何将节点添加到 gameScene。
我子class编辑了我的 Boss class 但我不知道如何在 GameScene 上显示我的 Boss1
class Boss: GameScene {
var gameScene : GameScene!
var Boss1 = SKSpriteNode(imageNamed: "boss1")
override func didMove(to view: SKView) {
Boss1.position = CGPoint(x: size.width * 0.1, y: size.height * 0.5)
Boss1.zPosition = 2
self.gameScene.addChild(Boss1)
}
}
我使用 swift 4 和 xcode 9
您通常不会将 class 场景用于此类实例。更有可能你的意思是让 boss 成为 SKSpriteNode
的子 class 并将其添加到你的场景中。虽然可能有许多方法可以子class this,但这只是一种方法。
还值得注意的是,将变量名大写通常是不可接受的做法,class是的,变量没有。
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.
}
}
...meanwhile back in 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 中,您创建新 class 的实例并将其定位并添加到 GameScene 中。
edit
init 函数在 swift 中有一个快捷方式。
Boss()
与
相同
Boss.init()
您还可以向您的 init 添加自定义参数,以进一步阐明或向您的 class 添加更多功能。例如...
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.
}
}
谁能解释一下如何将节点添加到 gameScene。
我子class编辑了我的 Boss class 但我不知道如何在 GameScene 上显示我的 Boss1
class Boss: GameScene {
var gameScene : GameScene!
var Boss1 = SKSpriteNode(imageNamed: "boss1")
override func didMove(to view: SKView) {
Boss1.position = CGPoint(x: size.width * 0.1, y: size.height * 0.5)
Boss1.zPosition = 2
self.gameScene.addChild(Boss1)
}
}
我使用 swift 4 和 xcode 9
您通常不会将 class 场景用于此类实例。更有可能你的意思是让 boss 成为 SKSpriteNode
的子 class 并将其添加到你的场景中。虽然可能有许多方法可以子class this,但这只是一种方法。
还值得注意的是,将变量名大写通常是不可接受的做法,class是的,变量没有。
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.
}
}
...meanwhile back in 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 中,您创建新 class 的实例并将其定位并添加到 GameScene 中。
edit
init 函数在 swift 中有一个快捷方式。
Boss()
与
相同Boss.init()
您还可以向您的 init 添加自定义参数,以进一步阐明或向您的 class 添加更多功能。例如...
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.
}
}