SpriteKit如何在不将dynamic设置为true的情况下检测碰撞?

8
我希望能检测到我的精灵之间的碰撞和接触,但我不想使它们动态移动(我只需要知道它们是否发生了接触)。如果我将我的玩家的 physicsBody.dynamic 设置为 true,则仅会调用 didBeginContact(contact: SKPhysicsContact!)。那么,如何在不影响玩家位置或移动的情况下获取这些代理方法调用呢?
2个回答

5
您可以将对象固定在屏幕上,这样您就不需要将重力设置为0(如果您想保留其他对象的重力)。将对象设置如下:
    object.physicsBody.dynamic = true
    object.physicsBody.affectedByGravity = false
    object.physicsBody.pinned = true

使用此设置,您的对象可以与其他对象碰撞而不移动。

1

physicsBody会遵循场景中设置的物理世界。当它们发生碰撞时,会与物理世界交互作用,而物理世界有一个默认的重力向下拉。

为了解决这个问题,在我的场景的init方法中,我设置了:

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

Dynamic仍然需要设置为true,因为我希望物理体与物理世界交互,但我不希望物理世界对它们产生影响,所以这是解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接