我正在使用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];
提前致谢!
答案 0 :(得分:6)
从Apple文档中了解 SKNode 和 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