SKPhysicsBody放慢了程序

时间:2014-12-14 03:18:35

标签: ios objective-c sprite-kit skphysicsbody

我有一个随机迷宫发生器,它开始构建小型迷宫,然后进入大规模的水平。 “C”是收藏品,“T”是瓷砖。 “P”是玩家的起始位置。我在下面添加了一个示例平铺图。

性能问题不是我在这里有一个小的6x12模式;例如,当我有一个20x20模式时,它会显示出来。

每个字符都是一个图块,每个图块都有自己的SKPhysicsBody。瓷砖不是方形的,它们是复杂的多边形,并且瓷砖彼此不会相互接触。

“C”需要能够一次删除一个,并且“T”对于关卡是永久性的并且不移动。此外,迷宫一次只显示6x4个区块,并将背景移动到以玩家为中心的视图。

我已经尝试制作T和C的矩形,这大大提高了性能(但仍然比预期慢)虽然用户不会关心这一点,但是瓷砖的形状太不同了。

专业人士是否有任何表现技巧可以解决这个问题?

TTTTTT
TCTTCT
TCCCCT
TTCTCT
TCCTCT
TTCCTT
TTTCTT
TTCCCT
TCCTCT
TCTTCT
TTCCCT
TTPTTT

2 个答案:

答案 0 :(得分:1)

  

瓷砖不是方形的,它们是复杂的多边形

我认为这是你的问题。此外,如果您的身体是动态的,将它们设置为静态将大大提高性能。您也可以尝试pooling。请注意,模拟器上的性能远低于真实设备上的性能。

答案 1 :(得分:1)

你使用什么样的碰撞方法?

enter image description here

SpriteKit提供了几种定义SKPhysicsBody形状的可能性。最佳性能提供矩形或圆形:

myPhysicsBody = SKPhysicsBody(rectangleOfSize: mySprite.size)

您还可以定义更复杂的形状,如三角形,其性能更差。

使用纹理(SpriteKit将使用所有非透明像素自行检测形状)具有最差的性能:

myPhysicsBody = SKPhysicsBody(texture: mySprite.texture, size: mySprite.size)

激活' usesPreciseCollisionDetection'也将对您的表现产生负面影响。

相关问题