Swift SpriteKit 从图像的纹理中制作物理体会大大降低我的应用程序的速度

Posted

技术标签:

【中文标题】Swift SpriteKit 从图像的纹理中制作物理体会大大降低我的应用程序的速度【英文标题】:Swift SpriteKit making physicsbody from texture of an image slows down my app too much 【发布时间】:2015-05-11 04:19:16 【问题描述】:

我正在尝试制作一个包含两个物理实体之间的碰撞检测的 ios 应用程序。我希望其中一个物理体是我正在使用的图像的形状,但是当我尝试使用纹理来执行此操作时,它会极大地减慢我的应用程序并最终导致它完全冻结。这是导致它的两行代码:

let texture = SKTexture(imageNamed: "image.png")  
physicsBody = SKPhysicsBody(texture: texture, size: size)  

但是,如果我将这两行更改为类似

physicsBody = SKPhysicsBody(rectangleOfSize: size)  

然后一切运行正常。有没有其他人遇到过这个问题和/或找到了解决方案?

【问题讨论】:

这是否会在物体移动、碰撞或...时发生?我刚刚对此进行了测试,但我无法产生您所说的内容。从纹理创建物理体很昂贵,但仅仅因为一个物理体而减慢您的应用程序的速度应该不会那么高。 ?尝试使用空项目并逐步进行。首先从纹理制作一个物理体并检查是否会减慢应用程序的速度。如果没有,请更进一步并通过施加冲动来移动身体。如果一切正常,请尝试进行碰撞。等等。这样你就可以确定是什么造成了问题,因为你正在做的事情应该有效。祝你好运! 当我在场景中添加大约 10 个三角形尖峰时,我也遇到了同样的问题。 【参考方案1】:

这可能是由于您的纹理性质复杂,但如果不看到它就很难判断。正如 Whirlwind 所说,它可能不应该导致如此显着的放缓,但如果没有进一步的信息,这很难解决。

绕过从纹理创建 SKPhysicsBody 的一种方法是使用在线工具从路径构建身体。我个人使用this tool。这可能是一个体面的工作。

【讨论】:

以上是关于Swift SpriteKit 从图像的纹理中制作物理体会大大降低我的应用程序的速度的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 丢失纹理

在Sprite纹理中检测触摸而不是整个框架iOS Swift SpriteKit?

如何在 SpriteKit 中使用不同大小的纹理制作动画

Swift / SpriteKit:如何创建水滴效果?

在 SpriteKit 中预加载纹理

SpriteKit:一种将大型纹理列为缩略图的有效方法