节点离开屏幕后丢失fps

时间:2015-02-10 04:05:22

标签: objective-c sprite-kit skspritenode skphysicsbody

我目前正在使用Sprite Kit进行简单的游戏。在游戏中,你是一个四处移动的方块,可以射击敌人。你拍摄的“Projectiles”只是一个继承自SKSpriteNode的自定义类。游戏一开始效果很好,但随着你继续拍摄,慢慢地恶化到极低的速度。当射弹离开屏幕时,节点数量会回落到射弹发射前的最初状态。

我试图解决它的第一件事就是以某种方式从撞击边缘的场景中释放出射弹。这是我尝试这样做的代码,但它根本没用。

-(void)didBeginContact:(SKPhysicsContact *)contact {
if (contact.bodyA.categoryBitMask == projectileCategory) {
    if (contact.bodyB.categoryBitMask == edgeCategory) {
        [contact.bodyA.node removeFromParent];
    }
} else if (contact.bodyA.categoryBitMask == edgeCategory) {
    if (contact.bodyB.categoryBitMask == projectileCategory) {
        [contact.bodyB.node removeFromParent];
    }
}

}

1 个答案:

答案 0 :(得分:0)

为了提高性能,您可以在update功能内的屏幕外移除射弹。

override func update(currentTime: CFTimeInterval) {
    for node in self.children as [SKNode] {
        if node.name == "projectile" {
            if !CGRectContainsPoint(self.frame, node.position)
            {
                println("removed")
                node.removeFromParent()
            }
        }
    }
}