SpriteKit - 添加敌人导致帧丢失

时间:2016-09-07 23:04:55

标签: ios scroll sprite-kit frame-rate

我的游戏是使用SpriteKit的侧卷轴。玩家停留在相同的x位置,障碍物正向他移动。但每当我添加敌人时,帧速率会在短时间内下降。我试图改变很多东西,比如去掉敌人的动力学或动画。但没有任何作用。 这是一些代码:

func addZombie() {
    let zombie = Zombie()
    zombie.position = CGPoint(x: screenWidth + zombie.size.width * 0.5, y: screenHeight * 0.5)

    zombies.append(zombie)
    addChild(zombie)
}

上述方法创造了敌人。它通过使用:

来调用
func generateZombies() {
    let wait = SKAction.waitForDuration(2.5)
    let run = SKAction.runBlock {
        self.addZombie()
    }
    runAction(SKAction.repeatActionForever(SKAction.sequence([wait, run])))
}

我也试过NSTimer,但没有任何作用。请帮帮我。

僵尸():

class Zombie: SKSpriteNode {

var textureArrayWalking = [SKTexture]()

init() {
    let mySize = CGSize(width: Player().size.width, height: Player().size.height * (4/3))
    super.init(texture: nil, color: UIColor.greenColor(), size: mySize)

    orderTextureAtlases()
    texture = textureArrayWalking[0]

    zPosition = 1

    physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: (2/3) * self.size.width, height: self.size.height))
    physicsBody?.restitution = 0.0
    physicsBody?.categoryBitMask = enemyCategory
    physicsBody?.collisionBitMask = groundCategory
    physicsBody?.contactTestBitMask = playerCategory | bulletCategory | groundCategory
    physicsBody!.allowsRotation = false;

    walk()
}

func walk() {
    runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(textureArrayWalking, timePerFrame: 0.07)), withKey: walkingActionKeyZombie)
}

func orderTextureAtlases() {
    let textureAtlasWalking = SKTextureAtlas(named: "ZombieWalking")

    for index in 0..<textureAtlasWalking.textureNames.count {
        let name = "ZombieWalking_JeromeWalk_\(index)"
        let tex = SKTexture(imageNamed: name)
        tex.filteringMode = .Nearest
        textureArrayWalking.append(tex)
    }
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}

0 个答案:

没有答案