Class SpriteKit类继承

Class SpriteKit类继承,class,inheritance,sprite-kit,Class,Inheritance,Sprite Kit,我有这个班的敌人。斯威夫特: class Enemy: SKNode { var health = Int() var enemyPosition = CGPoint() var enemy = SKSpriteNode() var enemyName = String() func moveEnemy() { //Some Code } } 我在GameSevent.swift中使用了这个: func crea

我有这个班的敌人。斯威夫特:

class Enemy: SKNode {

    var health = Int()
    var enemyPosition = CGPoint()
    var enemy = SKSpriteNode()
    var enemyName = String()

    func moveEnemy() {

              //Some Code
    }
}
我在GameSevent.swift中使用了这个:

func createEnemy() {

        var monster = Enemy()
        var node = SKSpriteNode(imageNamed: "Enemy-Sprite1")
        monster.guy = node
        monster.health = 4
        monster.enemyPosition = CGPointMake(10 ,  400)
        monster.guyName = "enemy1"
        monster.moveEnemy()
        self.addChild(monster)  
    }

但是它不工作,它根本不出现在屏幕上,是的,我把它叫做“didMoveToView”。我做错了什么

您可以将
SKSpriteNode
子类化,而不是
SKNode

class Enemy : SKSpriteNode
{
    var health : Int = 0
    var enemyName : String = ""

    func moveEnemy() {

    }
}
像这样使用它

var monster = Enemy(imageNamed: "Enemy-Sprite1")
monster.position = CGPointMake(10 ,  400)
monster.enemyName = "enemy1"
monster.health = 4
self.addChild(monster)

什么是
enemyPosition
?你是否设置了怪物的位置?你是否将你的怪物节点添加到你的怪物节点?就像monster.addChild(node)@rakeshbs一样,是的,它不会改变任何东西。为什么不只是将一个SKSpritenode子类化呢?因为它是一个SKSpritenode的子类,你必须使用至少一个初始值设定项。是的,这是完美的。我不想用无用的东西(init函数或coder,aDecoder)弄乱我的代码。