JuJoDi JuJoDi - 2 years ago 90
Swift Question

SpriteKit detect collision without setting dynamic to true?

I want my sprites collisions and contacts to be detected, but I don't want them to move dynamically (I just need to know that they've touched).

didBeginContact(contact: SKPhysicsContact!)
is only called if I set my player's
to true. How can I get these delegate method calls without effecting the position or movement of my player?

Answer Source

The physicsBodys follow the physics world set up by my scene. When they collide, they interact with the physicsWorld, which has a default gravity that pulls them downward.

To fix this issue, in the init method of my Scene I set

self.physicsWorld.gravity = CGVectorMake(0, 0)

Dynamic still has to be set to true because I want the physics bodies to interact with the physics world, but I don't want the physics world to effect them, so this is the resolution.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download