尝试使用Sprite-Kit设计游戏我发现为我的一个游戏对象创建一个单独的类是更容易的,它是来自船的激光。在那个课程中我会有一些功能,比如更新,拍摄等等。但每当我创建另一个类时,我所做的变量都不会被“声明”。这是我的代码
import UIKit
import SpriteKit
class laser: SKSpriteNode {
let laser : SKSpriteNode = SKSpriteNode(imageNamed:"playerShip")
laser.position = CGPoint(x: 100, y: 200)//This is where it says no declaration
}
答案 0 :(得分:2)
这是因为你需要发起课程。
在您的示例中,您需要执行以下操作,以便您实例化此类激光laser()
class laser: SKSpriteNode {
let laser: SKSpriteNode = SKSpriteNode(imageNamed: "playerShip")
init() {
super.init(texture: nil, color: .clear, size: laser.size)
laser.position = CGPoint(x: 100, y: 200)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
但你可能真的想要这个,它允许你实例化这样的let aLaser = laser("playerShip")
激光。然后,您可以更改此位置alaser.position = CGPoint(x: 100, y: 200)
。
此方法允许您轻松更改精灵和位置以适应不同的激光。除非你的游戏只有一个激光器。
class laser: SKSpriteNode {
init(_ imageName: String) {
let texture: SKTexture = SKTexture(imageNamed: imageName)
super.init(texture: texture, color: .clear, size: texture.size())
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}