SpriteKit bodyWithTexture在碰撞时精灵之间的差距

时间:2016-06-01 21:00:02

标签: sprite-kit

我是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:,则间隙消失。当节点发生碰撞时,如何摆脱这些间隙呢?

enter image description here

1 个答案:

答案 0 :(得分:2)

我完全相信问题是关于你的纹理图像,它们没有被精确裁剪甚至创建。

Spritekit引擎永远不会在节点之间创建间隙。