I have nine SKSpriteNodes that fall down from the top to the bottom of a screen. Also i have SKView, and I can drag it over the screen. How can I detect collision of my SKView with one of the nine SKSpriteNodes dynamically ?

有帮助吗?

解决方案

SKView doesn't have physicsBody property, so it cannot collide.

You can, however, manually check if SKView's frame intersects with SKSpriteNode's frame:

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

其他提示

In the scene, you can detect collision between the frame and the SKSpriteNodes.

In your Scene.m, add the code in the initWithSize:(CGSize)size:

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

and in - (void)didBeginContact:(SKPhysicsContact *)contact, you can detect the collision.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top