sprite-kit swift skphysicsbody

sprite kit - ¿SpriteKit detecta una colisión sin establecer la dinámica como verdadera?



sprite-kit swift (2)

Quiero que se detecten las colisiones y contactos de mi sprite, pero no quiero que se muevan dinámicamente (solo necesito saber que se han tocado).

didBeginContact(contact: SKPhysicsContact!) solo se didBeginContact(contact: SKPhysicsContact!) si configuro physicsBody.dynamic mi reproductor en verdadero. ¿Cómo puedo obtener estas llamadas al método delegado sin afectar la posición o movimiento de mi reproductor?


Los physicsBody siguen el mundo de la física creado por mi escena. Cuando colisionan, interactúan con physicsWorld, que tiene una gravedad predeterminada que los empuja hacia abajo.

Para solucionar este problema, en el método init de mi Scene I

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

La dinámica todavía tiene que establecerse en verdadera porque quiero que los cuerpos de física interactúen con el mundo de la física, pero no quiero que el mundo de la física los afecte, así que esta es la resolución.


Puede fijar objetos en la pantalla, por lo que no necesita establecer la gravedad en 0 (si desea mantener la gravedad para otros objetos). Establece el objeto de esta manera:

object.physicsBody.dynamic = true object.physicsBody.affectedByGravity = false object.physicsBody.pinned = true

Con esta configuración, su objeto puede colisionar con otros objetos sin moverse.