Igor Prusyazhnyuk
Igor Prusyazhnyuk

Reputation: 133

How to detect collision between SKSpriteNode and SKView SpriteKit

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 ?

Upvotes: 1

Views: 933

Answers (2)

jseanj
jseanj

Reputation: 1569

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.

Upvotes: 0

Andrey Gordeev
Andrey Gordeev

Reputation: 32559

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) {
        ....
    }
}

Upvotes: 2

Related Questions