SpriteKit检测碰撞而不将动态设置为true?

时间:2014-06-15 00:58:12

标签: sprite-kit swift skphysicsbody

我想要检测我的精灵碰撞和接触,但我不希望它们动态移动(我只需要知道它们已触及)。

仅当我将播放器的didBeginContact(contact: SKPhysicsContact!)设置为true时,才会调用{p> physicsBody.dynamic。如何在不影响播放器位置或移动的情况下获取这些委托方法调用?

2 个答案:

答案 0 :(得分:3)

您可以在屏幕上固定物体,因此您不需要将重力设置为0(如果您想保持其他物体的重力)。像这样设置对象:

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

使用此设置,您的对象可以在不移动的情况下与其他对象发生碰撞。

答案 1 :(得分:1)

physicsBody跟随我的场景设置的物理世界。当它们发生碰撞时,它们会与物理世界相互作用,物理世界的默认重力将它们向下拉。

要解决此问题,请在我的场景的init方法中设置

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

动态仍然必须设置为true,因为我希望物理主体与物理世界交互,但我不希望物理世界影响它们,所以这就是分辨率。