尝试使用Sprite Kit制作我的第一个Swift应用程序。 该应用程序必须创建最多5个对象,这些对象必须随机移动到屏幕上。速度增加,尺寸每5秒减少一次。 场景设置正确,对象出现并移动但是一段时间后CPU使用率变为100%,FPS降至0并且应用程序挂断。有时它会继续工作几秒钟,有时则不会。 是什么原因?
我只是Xcode中的菜鸟 - 有可能在模拟过程中找到现在正在运行的代码块吗?
这是更新功能。我没有包含didMoveToView
和touchesBegan
因为它们似乎没有影响这个问题。
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)
}
}
}
答案 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
并且冻结消失但对象不会彼此交互