在didBeginContact期间创建一个sprite

时间:2014-04-11 18:10:31

标签: sprite-kit

我一直在研究一些SpriteKit教程。我理解整个碰撞的事情并且已经通过NSLog验证我的两个对象之间正在记录碰撞。然而,由于一些非常奇怪的原因,我的精灵在didBeginContact期间完成时没有被创建(或者说显示)。

- (void)didBeginContact:(SKPhysicsContact *)contact
{
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
     if (collision == (CNPhysicsCategoryPlayer | CNPhysicsCategoryRock))
     {
         NSLog(@"ouch");
         SKSpriteNode *bigOuch = [SKSpriteNode spriteNodeWithImageNamed:@"star"];
         bigOuch.position = CGPointMake(200, 200);
         [self addChild:bigOuch];
     }
}

我收到了哎哟日志消息,但没有出现精灵。

我在程序的其他部分尝试了相同的(精灵创建)代码,没有任何问题。我做错了什么?

1 个答案:

答案 0 :(得分:2)

前一阵子我被困在同样的问题上。您可以创建SKSpriteNode并将其添加到视图中,但不会显示它。缺点是我最终创建了一个数组并添加了我需要在didBeginContact阶段创建的任何精灵。在更新阶段,我检查了数组并将它们添加到我的视图中。记得在完成后清空数组。否则你最终会反复添加相同的精灵。