带有纹理的物理身体会减慢fps

问题描述 投票:0回答:2

我有一个游戏,屏幕上同时有大约 8 个 SKPhysicsBodies,其中两个只是简单的正方形,并且是用纹理创建的。纹理没什么太复杂的,这是一张图片:https://i.stack.imgur.com/FJKlz.jpg(黑色是透明的)。问题是,每次我生成一个用纹理创建的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)
}
swift sprite-kit
2个回答
0
投票

您何时何地制造障碍?我想正如 Knight0fdragon 所说,您必须尝试创建更新事件。 愚蠢的问题。你在真机还是模拟器上测试?

致敬, 何塞普·M


0
投票

我也经历过这一点,即使是看似最简单的形状。我现在仅在极少数情况下使用

SKPhysicsBody bodyWithTexture:
,因为它会对性能产生重大影响(帧速率降低多达 33%)。

© www.soinside.com 2019 - 2024. All rights reserved.