我是SpriteKit的新手,我正在尝试创建一个游戏,其中块会从屏幕顶部掉落并落在屏幕底部或另一个块顶部。以下是GameScene.m的示例代码:
- (void)didMoveToView:(SKView *)view
{
self.size = CGSizeMake(view.frame.size.width, view.frame.size.height);
self.backgroundColor = [UIColor whiteColor];
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
SKSpriteNode *redRect = [SKSpriteNode spriteNodeWithImageNamed:@"RedRect"];
redRect.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.size.height);
redRect.physicsBody = [SKPhysicsBody bodyWithTexture:redRect.texture size:redRect.texture.size];
redRect.physicsBody.affectedByGravity = YES;
SKSpriteNode *blueRect = [SKSpriteNode spriteNodeWithImageNamed:@"BlueRect"];
blueRect.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.size.height);
blueRect.physicsBody = [SKPhysicsBody bodyWithTexture:blueRect.texture size:blueRect.texture.size];
blueRect.physicsBody.affectedByGravity = YES;
[self addChild:redRect];
[self addChild:blueRect];
}
正如您在屏幕截图中看到的那样,两个街区之间以及红色街区和地面之间存在间隙。只有当管道相互碰撞或与地面相撞时才会发生这种情况。例如,如果我使用将块移动到屏幕底部的SKAction moveToY:
,则间隙消失。当节点发生碰撞时,如何摆脱这些间隙呢?
答案 0 :(得分:2)
我完全相信问题是关于你的纹理图像,它们没有被精确裁剪甚至创建。
Spritekit
引擎永远不会在节点之间创建间隙。