Я пытался оптимизировать код, чтобы снизить использование моего процессора. Я переписал эти функции пару раз безрезультатно, ища некоторую помощь.Оптимизация кода Физика
63% времени, потраченного на мяч в ... линии, которая насчитывает не более 24 детей.
func totalMass() -> CGFloat {
var ret : CGFloat = 0
for ball in self.children as! [Ball] {
ret += ball.mass
}
return ret
}
почти 90% времени, затрачиваемого на если расстояние (питание ...) может быть более 800 штук «пищи» в одно время.
func randomMove() {
confidenceLevel = 0
if let b = self.children.first as! Ball? {
if b.physicsBody?.velocity == CGVector(dx: 0, dy: 0) {
//print("a")
self.move(randomPosition())
} else if b.position.x + b.radius > 1950 || b.position.x - b.radius < -1950 {
//print("here", b.position.x, b.radius)
self.move(randomPosition())
} else if b.position.y + b.radius > 1950 || b.position.y - b.radius < -1950 {
//print("there")
self.move(randomPosition())
} else {
// Keep moving
let scene : GameScene = self.scene as! GameScene
for food in scene.foodLayer.children as! [Food] {
if distance (food.position, p2: self.centerPosition()) < b.radius * 5 {
self.move(food.position)
return
}
}
}
}
}
100% от времени, затраченного на закрывающей фигурной скобкой линии }) до третьего IF Постулаты
override func didSimulatePhysics() {
world.enumerateChildNodesWithName("//ball*", usingBlock: {
node, stop in
let ball = node as! Ball
ball.regulateSpeed()
if let body = ball.physicsBody {
if (body.velocity.speed() > 0.01) {
ball.zRotation = body.velocity.angle() - self.offset
}
}
})
if let p = currentPlayer {
centerWorldOnPosition(p.centerPosition())
} else if playerLayer.children.count > 0 {
let p = playerLayer.children.first! as! Player
centerWorldOnPosition(p.centerPosition())
} else {
centerWorldOnPosition(CGPoint(x: 0, y: 0))
}
}
Печать в середине чего? Что еще объясняет, что FPS составляет 20 и ниже? – BARIIIIIIICODE
Дайте [* this *] (http://stackoverflow.com/a/378024/23771). Он точно скажет вам, на что смотреть. –
Возможно, мне не хватает того, что вы пытаетесь мне рассказать, похоже, что выборка обнаруживает проблему, которую я сделал, или, я думаю, – BARIIIIIIICODE