2016-06-01 4 views
1

Ich bin neu in SpriteKit und ich versuche, ein Spiel zu erstellen, wo Blöcke von der Spitze des Bildschirms fallen und landen auf der Unterseite des Bildschirms oder auf einem anderen Block. Hier ist der Beispielcode aus GameScene.m:SpriteKit bodyWithTexture Lücke zwischen Sprites beim Zusammenstoßen

- (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]; 
} 

Wie man auf dem Screenshot sehen, gibt es eine Lücke zwischen den beiden Blöcken und zwischen dem roten Block und dem Boden. Dies geschieht nur, wenn die Rekruten miteinander oder mit dem Boden kollidieren. Wenn ich zum Beispiel den SKAction moveToY: benutze, der den Block zum unteren Bildschirmrand bewegt, verschwindet die Lücke. Wie kann ich diese Lücken beseitigen, wenn die Knoten kollidieren?

enter image description here

Antwort

2

Ich bin ganz sicher, dass das Problem über Ihre Texturbilder ist, sind sie nicht gerade abgeschnitten oder sogar geschaffen.

Spritekit Engine erstellt nie Lücken zwischen den Knoten.

+0

Meine schlechte, du hattest Recht, meine Bilder hatten unsichtbare Grenze um sie herum und es dauerte 2 Tage, um es zu bemerken! – Preemoz