SpriteKit PhysicsBody: Could not create physics body for basic shape
Asked Answered
V

2

6

I have an extremely basic polygon that is the texture for a sprite in my game, yet when I try and create a physicsBody from this texture for the sprite I get this error:

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

Also, the game uses many different simple polygons and for some the physicsBody can be created, yet for others it gets an error.

func setPhysics(size: CGSize) {

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

}

Here is the texture:

Simple Heptagon Sprite Texture

Vaginate answered 19/6, 2016 at 12:37 Comment(1)
I had similar issue for for my sprites. When I changed Texture images from sprite sheet images to image-set images for SKPhysicsBody, this error went away.Him
D
1

In my playground it is working. Try replacing the size parameter as in the code below and let me know

let asteroidTexture = SKTexture(imageNamed: "sprite")
let physicsBody = SKPhysicsBody(texture: asteroidTexture, size: asteroidTexture.size())
Downtrend answered 19/6, 2016 at 13:13 Comment(5)
Changed it to self.physicsBody = SKPhysicsBody(texture: asteroidTexture, size: asteroidTexture.size()) but I still get the same error.Vaginate
@user1947112 Ok, then it could be related to the image. If the transparent part has some pixel it can create problems. Could you regenerate your image from zero?Downtrend
I have, it was created in Adobe Illustrator as a simple polygon with a transparent background, the image was attached above, I'm sure there's no extra pixels. It's very strange that some of the images created the exact same way do work.Vaginate
@user1947112: yes it's strange. I'm still trying to find the reasonDowntrend
@appzYourLife could you please check out my post, been at it for a while #44295268Sweeping
S
0

I've experimented that this kind of physical representation could be decelerate your collisions. Instead of it, if you don't require extreme precision to the physical bodies of your sprites try to use:

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

It is much lighter and slimmer for the cpu calculations. You can see the big difference when your game is almost completed (for example 80%). I hope this helps.

Steinway answered 19/6, 2016 at 14:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.