Collections 如何在精灵套件中检测碰撞?

Collections 如何在精灵套件中检测碰撞?,collections,sprite-kit,skphysicsbody,Collections,Sprite Kit,Skphysicsbody,我正在用Sprite Kit做一个游戏,我在SpriteNodes之间的碰撞检测方面遇到了困难, 我已经设置了一个名为sprite的sprite节点和一个名为platform的sprite节点。 我希望精灵在与平台相撞时停止坠落。 这就是我所拥有的: SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"bal.png"]; sprite.position = CGPointMake(sel

我正在用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];

提前谢谢

来自关于SKNode和physicsBody属性的Apple文档:

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

如果你想让球在平台上滚动,你必须设置平台的physicsBody属性

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

一个布尔值,指示物理实体是否被物理模拟移动

否则,如果另一个受物理影响的对象落在平台上,则平台将倒塌/移动

链接:

感谢您的回复,我理解您的意思,但我需要的确切代码行是什么?正如所说的,您需要为平台设置physicsBody,因此您需要类似的内容:platform.physicsBody=[SKPhysicsBody WithRectangleOfSize:platform.size];此外,必须禁用动力学,以便平台不会坠落:platform.physicsBody.dynamic=NO;非常感谢@lahmar!不客气:)如果你能接受答案(我的答案上留下绿色的复选标记),那就太好了。通过这种方式,其他人可以看到这个问题已经得到了成功的回答,而其他寻找同一问题答案的人可以更快地找到答案。