Sprite kit 在didBeginContact期间创建精灵

Sprite kit 在didBeginContact期间创建精灵,sprite-kit,Sprite Kit,我一直在做一些SpriteKit教程。我了解整个碰撞事件,并使用NSLog验证了两个对象之间正在注册碰撞。然而,由于一些非常奇怪的原因,当我的精灵在didBeginContact中完成时,它并没有被创建(或者更确切地说是显示) - (void)didBeginContact:(SKPhysicsContact *)contact { uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBi

我一直在做一些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];
     }
}
我收到了痛苦日志消息,但没有精灵出现


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

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