如何在gameScene上添加另一个类的精灵

时间:2018-03-13 14:03:41

标签: swift xcode sprite-kit sknode

任何人都可以解释如何将节点添加到gameScene中。

我将我的Boss类继承了,但我不知道如何在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

1 个答案:

答案 0 :(得分:0)

对于像这样的实例,您通常不会对场景进行子类化。更有可能的意思是让boss成为if (shapes[i].getText().asString().indexOf("needle") !== -1) { // do something } 的子类并将其添加到场景中。虽然可能有很多方法可以将其子类化,但这只是一种方法。

另外值得注意的是,通常不能接受的做法是将变量名称大写,类yes,变量号。

SKSpriteNode
  

......同时回到GameScene

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中,您可以创建新类的实例并对其进行定位并将其添加到GameScene中。

  

修改

init函数在swift中有一个捷径。

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)  
    }   
}

相同
Boss()

您还可以向init添加自定义参数,以进一步说明或向您的课程添加更多功能。例如......

Boss.init()