我正在尝试为我的场景添加敌人,但是当我这样做时,精灵只会显示为黑盒子。我知道我在项目中拥有正确的图像,因为它在GameScene类中工作。但是,我想把它移到另一个类,所以我可以添加多个敌人。
以下是Enemy类中的代码:
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)
答案 0 :(得分:1)
改变这个:
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)
}
答案 1 :(得分:0)
您正在使用图片创建新的SKSpriteNode:
let monster = SKSpriteNode(imageNamed: "monster")
在此之后,您正在使用自己的数据重新初始化它(但正如Basher_CAD指出的那样,您忽略了纹理以及颜色):
self.init(texture: monster.texture, color: monster.color, size: monster.size)
删除self.init
调用(以及方法)应解决此问题。