我的SKSprite节点显示为一个黑框



我试图在场景中添加敌人,但当我这样做时,精灵只显示为一个黑框。我知道我在这个项目中有正确的图像,因为它在GameScene类中工作。然而,我想把它移到另一个类,这样我就可以添加多个敌人。

这是敌人类的代码:

import Foundation
import SpriteKit
class Enemy: SKSpriteNode {
    override init(texture: SKTexture?, color: UIColor, size: CGSize) {
        super.init(texture: nil, color: UIColor.blackColor(), size: size)
    }
    convenience init(pos: CGPoint) {
        let monster = SKSpriteNode(imageNamed: "monster")
        self.init(texture: monster.texture, color: monster.color, size: monster.size)
        self.position = pos
        self.physicsBody = SKPhysicsBody(rectangleOfSize: size)
        self.physicsBody!.dynamic = true
        self.physicsBody!.affectedByGravity = false
        self.physicsBody!.categoryBitMask = PhysicsCategory.Monster
        self.physicsBody!.contactTestBitMask = PhysicsCategory.Projectile
        self.physicsBody!.collisionBitMask = PhysicsCategory.None
    }
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

以下是我在GameScene课程中对它的称呼:

    let monster = Enemy(pos: CGPoint(x: size.width * 0.7, y: size.height * 0.7))
    addChild(monster)

更改此项:

 override init(texture: SKTexture?, color: UIColor, size: CGSize) {
        super.init(texture: nil, color: UIColor.blackColor(), size: size)
    }

至:

 override init(texture: SKTexture?, color: UIColor, size: CGSize) {
        super.init(texture: texture, color: UIColor.blackColor(), size: size)
    }

您正在使用图像创建一个新的SKSpriteNode:

    let monster = SKSpriteNode(imageNamed: "monster")

在那之后,你用它自己的数据重新初始化它(但正如Basher_CAD所指出的,你忽略了纹理和颜色):

    self.init(texture: monster.texture, color: monster.color, size: monster.size)

删除self.init调用(以及方法)应该可以解决此问题。

最新更新