1

プレーヤーが (ポリゴン) 領域に出入りするタイミングを知る必要があります。この領域は 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 に出入りするタイミングを判断する正しい方法は何ですか?

4

2 に答える 2

0

内部に別のノードがあるかどうかを検出する必要があるノードと同じ場所に CGRect を配置できますか? 次に、update 関数で CGRect の contains 関数を使用して、その中にノードがあるかどうかを判断します。

于 2014-06-12T16:34:29.347 に答える
0

contact デリゲートが複数回呼び出されている理由はわかりませんが、physicsBody のサイズが非常に小さく設定されていることに関係していると思います。

領域のphysicsBodiesが端の線だけではなく領域全体を埋めるようにしてから、毎回BOOLを反転するのではなく、didBeginContactを使用してフラグをYESに設定し、didEndContactを使用してフラグをNOに設定しますデリゲートが呼び出されます。

于 2014-03-31T21:03:11.983 に答える