2017-01-09 1 views
1

저는 물리학을 기반으로하는 게임을 끝내고 있습니다. Xcode는 CPU 사용량이 약 21-26 %이므로 에너지 영향이 "매우 높음"이라고 말합니다. (나는 시뮬레이터가 아닌 릴리스 구성에서 iPhone 6을 사용하고 있습니다.) 각 노드의 SKPhysicsBody가 어디에 있는지 문제를 파악했습니다. 내가 physics body의 초기화를 주석 처리 할 때 CPU 사용량은 4-7 %로 떨어지고 에너지 영향은 "Low"라고 읽습니다. 누군가 나에게해야 할 일에 대한 통찰력을 줄 수 있습니까?SKPhysicsBody가 CPU 사용량을 높입니다.

class Item:SKSpriteNode { 

var id:[Int] 

init(type: String, ID: [Int]) { 
    self.id = ID 
    var newTexture = SKTexture(imageNamed: type) 
    super.init(texture: newTexture, color: UIColor(), size: newTexture.size()) 
    self.name = type 
    setPhysicsBody() 
} 

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


func setPhysicsBody() { 
    physicsBody = SKPhysicsBody(circleOfRadius: 3) 
    physicsBody?.isDynamic = false 
    physicsBody?.categoryBitMask = bitMask.obstacleCategory 
    physicsBody?.contactTestBitMask = bitMask.ballCategory 
    physicsBody?.collisionBitMask = bitMask.ballCategory 
    physicsBody?.restitution = 0.05 
    physicsBody?.friction = 0.1 
} 

} 
+1

이것은 거의 예상되는 동작입니다. 물리학 기관 (실제로 모든 게임)을 이용하는 모든 게임이 시스템에 과세됩니다. 물리학 및 모든 복합 적분을 마이크로 초 단위로 계산합니다. 정말로, 나는 당신이 뭔가 정상적인 것을 강조하고 있다고 생각합니다. – Pierce

+0

재사용 할 수있는 새로운 노드를 빠르게 만들고 있습니까? 그렇지 않으면 이것은 예상 된 동작이므로 CPU는 매 프레임마다 각 노드의 물리학을 계산해야합니다. –

+0

@ 피어스 오 오케이, 노드가 5 개 또는 6 개 정도 많이 생성되지는 않습니다.하지만 계산에 대해 두 사람 모두 말한 것입니다. 감사합니다. – Muffinman2497

답변

0

당신은 설정하여 CPU 부하를 완화 시키는데 도움 수있는 SKPhysicsBodycontactTestBitMaskcollisionBitMask. 기본적으로 CPU는 각 물리 구조체와 그 관계를 모두 다른 물리학 체로 추적합니다. contactTestBitMaskcollisionBitMask을 설정하면 물리 물리 체가 상호 작용할 필요가있는 객체에 대해서만 CPU에게 알릴 수 있습니다.

관련 문제