我有一个游戏,屏幕上同时有大约 8 个 SKPhysicsBodies,其中两个只是简单的正方形,并且是用纹理创建的。纹理没什么太复杂的,这是一张图片:(黑色是透明的)。问题是,每次我生成一个用纹理创建的PhysicsBody 时,游戏都会冻结几毫秒,从而破坏整个游戏,我怎样才能提高游戏的性能呢?这是我创建物理主体的方法:
createObstacle1() {
let obstTexture1 = SKTexture(imageNamed: "obst1")
let obst1 = SKSpriteNode()
obst1.size = CGSize(width: 30, height: 30)
obst1.color = player.color
obst1.zPosition = 3
obst1.physicsBody = SKPhysicsBody(texture: obstTexture1, size: obst1.size)
obst1.physicsBody?.affectedByGravity = false
obst1.physicsBody?.allowsRotation = false
obst1.physicsBody?.isDynamic = false
obst1.physicsBody?.restitution = 0
obst1.physicsBody?.linearDamping = 0
obst1.physicsBody?.angularDamping = 0
obst1.physicsBody?.friction = 0
obst1.physicsBody?.categoryBitMask = 3
obst1.physicsBody?.collisionBitMask = 1
obst1.physicsBody?.contactTestBitMask = 1
obst1.name = "obst1"
self.addChild(obst1)
}
您何时何地制造障碍?我想正如 Knight0fdragon 所说,您必须尝试创建更新事件。 愚蠢的问题。你在真机还是模拟器上测试?
致敬, 何塞普·M
我也经历过这一点,即使是看似最简单的形状。我现在仅在极少数情况下使用
SKPhysicsBody bodyWithTexture:
,因为它会对性能产生重大影响(帧速率降低多达 33%)。