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 physicsBody.dynamic
to true. How can I get these delegate method calls without effecting the position or movement of my player?
You can pin objects on the screen, so you don't need to set the gravity to 0 (If you want to keep the gravity for other objects). Set the object up like this:
object.physicsBody.dynamic = true
object.physicsBody.affectedByGravity = false
object.physicsBody.pinned = true
With this setup your object can collide with other objects without moving.
The physicsBody
s 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With