使用Swift 4创建SKSpriteNode类

时间:2018-03-12 20:52:47

标签: swift class sprite-kit skspritenode

我使用Swift 4和XCode编写了一个简单的游戏,并且我已经编写了GameScene中的所有内容。我的所有元素(怪物,玩家,射弹等)都在GameScene中编码。

我想将我的代码转移到专用类(Class Player,class monster等)

我想知道SKSpriteNode类的基本结构以及GameScene中该类的调用,以便更有效地调整我的代码。

以下是我尝试过的一个例子:

class Vaisseau: SKSpriteNode /*: Creatures */{

var coeur: Int = 0

init(texture: SKTexture, size: CGSize)
{
    let texture = SKTexture(imageNamed: "player")
    super.init(texture: texture, color: UIColor.clear, size: texture.size())
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

GameScene中的初始化:

 let player = Vaisseau()

以下是GameScene中实际定义的方式:

let player = SKSpriteNode(imageNamed: "player")

1 个答案:

答案 0 :(得分:0)

您声明您的init有两个参数(texture: SKTexture, size: CGSize),但您没有在初始化调用中传递参数

let player = Vaisseau()

您需要将初始化更改为...

let texture = SKTexture(imageNamed: "player")
let player = Vaisseau(texture: texture, size: texture.size())

并将init更改为

init(texture: SKTexture, size: CGSize) {
    super.init(texture: texture, color: UIColor.clear, size: size)
}
  

或者将类中的init更改为...

init() {
    let texture = SKTexture(imageNamed: "player")
    super.init(texture: texture, color: UIColor.clear, size: texture.size())
}

并将初始化调用保留为...

let player = Vaisseau()
player.position = CGPoint(x: 500, y: 500)
addChild(player)
  

EDIT添加了以上2行,向您展示那些需要在场景中   但其他项目,如alpha,zPosition,actions,zRotation等可以在类

你需要问自己要弄清楚使用哪一个"玩家的纹理会不同?"如果是这样,你可能想要考虑传递纹理的第一个选项。