Sprite Kit创建单独的类

时间:2017-03-12 20:37:32

标签: swift sprite-kit

尝试使用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


}

enter image description here

1 个答案:

答案 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")
    }

}