我需要知道玩家何时进入或退出(多边形)区域。该区域由 SKShapeNodes 构成。每个 SKShapeNode 都是一条直线。
一个不错的方法似乎是通过 SKPhysicsBody 在玩家和这些线之间进行碰撞检测。如果玩家在区域内或区域外,我会通过标志进行跟踪。
SKPhysicsBody *pilotPhysics = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(0.1, 0.1)];
[pilotPhysics setCategoryBitMask: pilotCategory];
[pilotPhysics setCollisionBitMask: pilotCategory];
[pilotPhysics setContactTestBitMask: airspaceCategory];
但即使大小为 0.1 x 0.1,我的 SKPhysicsContactDelegate 也会收到多个 beginContact 消息。有时标记在很短的时间间隔内被翻转了很多次,它在通过周界后具有错误的值。
确定 SKNode 何时进入或退出另一个 SKNode 的正确方法是什么?