我一直在研究一些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];
}
}
我收到了哎哟日志消息,但没有出现精灵。
我在程序的其他部分尝试了相同的(精灵创建)代码,没有任何问题。我做错了什么?
答案 0 :(得分:2)
前一阵子我被困在同样的问题上。您可以创建SKSpriteNode并将其添加到视图中,但不会显示它。缺点是我最终创建了一个数组并添加了我需要在didBeginContact阶段创建的任何精灵。在更新阶段,我检查了数组并将它们添加到我的视图中。记得在完成后清空数组。否则你最终会反复添加相同的精灵。