Ios 精灵套件进入/退出区域
我需要知道玩家何时进入或退出(多边形)区域。该区域由SKShapeNodes构成。每个SKShapeNode都是一条直线 一个很好的方法似乎是通过SKPhysicsBody在玩家和这些线之间进行碰撞检测。如果玩家在区域内或区域外,我会通过旗帜跟踪Ios 精灵套件进入/退出区域,ios,sprite-kit,skphysicsbody,Ios,Sprite Kit,Skphysicsbody,我需要知道玩家何时进入或退出(多边形)区域。该区域由SKShapeNodes构成。每个SKShapeNode都是一条直线 一个很好的方法似乎是通过SKPhysicsBody在玩家和这些线之间进行碰撞检测。如果玩家在区域内或区域外,我会通过旗帜跟踪 SKPhysicsBody *pilotPhysics = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(0.1, 0.1)]; [pilotPhysics setCategoryBitMa
SKPhysicsBody *pilotPhysics = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(0.1, 0.1)];
[pilotPhysics setCategoryBitMask: pilotCategory];
[pilotPhysics setCollisionBitMask: pilotCategory];
[pilotPhysics setContactTestBitMask: airspaceCategory];
但即使大小为0.1 x 0.1,我的SkPhysicContactDelegate也会收到多条beginContact消息。有时,标记在短时间内被翻转了很多次,在通过周界后,它的值是错误的
确定一个SKNode何时进入或退出另一个SKNode的正确方法是什么?我不确定为什么会多次调用联系人代理,但我猜这与physicsBody大小设置为如此之小有关
我会尝试让区域的物理实体填充整个区域,而不仅仅是边缘的一条线,然后使用didBeginContact将标志设置为YES,使用didEndContact将标志设置为NO,而不是每次调用代理时都翻转布尔值。您是否可以将一个CGRect放在需要检测其内部是否有其他节点的节点所在的位置?然后在update函数中使用CGRect中的contains函数来确定其中是否有节点