Sprite Kit应用程序挂起

时间:2016-03-30 15:36:16

标签: ios swift sprite-kit

尝试使用Sprite Kit制作我的第一个Swift应用程序。 该应用程序必须创建最多5个对象,这些对象必须随机移动到屏幕上。速度增加,尺寸每5秒减少一次。 场景设置正确,对象出现并移动但是一段时间后CPU使用率变为100%,FPS降至0并且应用程序挂断。有时它会继续工作几秒钟,有时则不会。 是什么原因?

我只是Xcode中的菜鸟 - 有可能在模拟过程中找到现在正在运行的代码块吗?

这是更新功能。我没有包含didMoveToViewtouchesBegan因为它们似乎没有影响这个问题。

override func update(currentTime: CFTimeInterval) {
    if (currentTime-oldTime)>1 {
        if arrayofAims.isEmpty==false {
            for currentAim in arrayofAims {
                repeat {xvelocity=(Int(arc4random())%3 - 1) * aimSpeedX} while xvelocity == 0
                repeat {yvelocity=(Int(arc4random())%3 - 1) * aimSpeedX} while yvelocity == 0
                currentAim.physicsBody?.applyForce(CGVectorMake (CGFloat(xvelocity), CGFloat(yvelocity)))
                }
            }
        oldTime=currentTime
        timecount+=1
    }
    if timecount>5 {
        if aimSpeedX < 5000 {
            aimSpeedX+=200
        }
        if aimSizeRatioX > 0.3 {
            aimSizeRatioX -= 0.05
            aimSizeRatioY -= 0.05
        }
        timecount=0
        if arrayofAims.count<6 { arrayofAims.append(createAnAim())
            currentAim=arrayofAims[arrayofAims.count-1]
            addChild(currentAim)
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

可能通过它的一些Sprite Kit碰撞模型bug?有一个

aim.physicsBody = SKPhysicsBody(texture: aim.texture!, size: aim.size)
aim.physicsBody?.categoryBitMask = aimCategory 
aim.physicsBody?.collisionBitMask = aimCategory | boundCategory 

我用

替换了它
aim.physicsBody?.collisionBitMask = boundCategory 

并且冻结消失但对象不会彼此交互