SpriteKit物理体:无法为基本形状创建物理体。

6

我有一个非常基础的多边形,它是我游戏中精灵的纹理,但是当我尝试从这个纹理创建物理体以用于精灵时,我会得到以下错误:

2016-06-19 08:25:21.707 Space Escape[14677:5651144] PhysicsBody: Could not create physics body.

此外,游戏使用了许多不同的简单多边形,对于一些多边形可以创建物理体,但对于其他多边形则会出现错误。
func setPhysics(size: CGSize) {

    self.physicsBody = SKPhysicsBody(texture: asteroidTexture, size: size)
    self.physicsBody?.angularDamping = 0
    self.physicsBody?.angularVelocity = 2

}

这是纹理图案:

简单七边形精灵纹理


我在处理精灵时遇到了类似的问题。当我将纹理图像从精灵表图像更改为用于SKPhysicsBody的图像集图像时,这个错误就消失了。 - ZippyMind
2个回答

1
在我的游乐场中它是工作的。尝试像下面的代码一样替换size参数,然后让我知道。
let asteroidTexture = SKTexture(imageNamed: "sprite")
let physicsBody = SKPhysicsBody(texture: asteroidTexture, size: asteroidTexture.size())

我将其更改为 self.physicsBody = SKPhysicsBody(texture: asteroidTexture, size: asteroidTexture.size()),但仍然出现相同的错误。 - themaxgoldman
@user1947112 好的,那么可能与图像有关。如果透明部分有一些像素,它可能会导致问题。您能否从零开始重新生成您的图像? - Luca Angeletti
我有一个简单的多边形图像,是在Adobe Illustrator中创建的,背景是透明的。我已经将该图像附在上面了,我确信没有多余的像素。但很奇怪的是,有些以完全相同方式创建的图像却可以正常工作。 - themaxgoldman
@user1947112:是的,这很奇怪。我还在努力找到原因。 - Luca Angeletti
@appzYourLife,你能否帮我看一下我的帖子?我已经在上面花了很长时间了。https://dev59.com/V6Lia4cB1Zd3GeqPfjdL - Containment

0

我已经尝试过这种物理表现方式可能会减缓你的碰撞。如果你不需要对精灵的物理身体进行极端精确度的控制,那么请尝试使用:

self.physicsBody = SKPhysicsBody(circleOfRadius: size.width/2)

对于 CPU 计算来说,它更轻巧、更纤薄。当你的游戏接近完成时(例如 80%),你可以看到很大的差异。希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接