如何检测SKSpriteNode和SKView SpriteKit之间的冲突



我有九个SKSpriteNodes,它们从屏幕的顶部下降到底部。我还有SKView,我可以把它拖到屏幕上。如何动态检测我的SKView与九个SKSpriteNodes中的一个的碰撞?

SKView没有physicsBody属性,因此它不能碰撞。

但是,您可以手动检查SKViewframe是否与SKSpriteNode的帧相交:

- (void)update:(CFTimeInterval)currentTime {
    if (CGRectIntersectsRect(skView.frame, node.frame) {
        ....
    }
}

在场景中,可以检测帧和SKSpriteNodes之间的碰撞。

在Scene.m中,在initWithSize:(CGSize)size:中添加代码

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody.categoryBitMask = kSceneCategory;
self.physicsBody.contactTestBitMask = kSKNodeCategory; // this is your SKSpriteNode's categoryBitMask

- (void)didBeginContact:(SKPhysicsContact *)contact中,可以检测到碰撞。

最新更新