如何检测sprite kit中的碰撞?

Vin*_*nce 3 collections sprite-kit skphysicsbody

我在Sprite Kit中制作游戏,我在SpriteNodes之间的碰撞检测方面遇到了困难,我设置了一个名为sprite的sprite节点和一个名为platform的sprite节点.我希望精灵在与平台相撞时停止下降.这就是我所拥有的:

        SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"bal.png"];
        sprite.position = CGPointMake(self.frame.size.width/4 + arc4random() % ((int)self.frame.size.width/2), (self.frame.size.height/2 + arc4random() % ((int)self.frame.size.height/2)));
        sprite.color = [self randomColor];
        sprite.colorBlendFactor = 1.0;
        sprite.xScale = 0.2;
        sprite.yScale = 0.2;
        [self addChild:sprite];
        sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2];
        self.physicsWorld.gravity = CGVectorMake(0.0f, -4.0f);

        SKSpriteNode *platform = [SKSpriteNode spriteNodeWithImageNamed:@"YellowPlatform.png"];
        platform.position = CGPointMake(CGRectGetMidX(self.frame), -200+CGRectGetMidY(self.frame));
        platform.size = CGSizeMake(180, 10);
        [self addChild:platform];
Run Code Online (Sandbox Code Playgroud)

提前致谢!

lah*_*mar 6

从有关SKNode的Apple文档和physicsBody属性:

默认值为nil,表示该节点根本不参与物理模拟.

如果你想让你的球在平台上滚动或者你需要设置平台的physicsBody属性.

此外,您必须禁用平台上的动态属性:

一个布尔值,指示物理模拟是否移动了物理主体.

否则,如果另一个物理影响对象落在它上面,你的平台会掉下/移动.

链接:https ://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/Reference/Reference.html#//apple_ref/occ/instp/SKNode/physicsBody https://developer.apple.com /library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/Reference/Reference.html

  • 欢迎你:)如果你能接受答案会很好(从我的回答中留下绿色复选标记).通过这种方式,其他人可以看到这个问题已成功回答,而寻找同一问题答案的其他人可以更快地找到答案. (2认同)