我在SpriteKit中遇到以下问题:我的目标是让糖果从屏幕顶部不断下降。这些糖果可以由玩家收集。每0.8秒左右,另一个糖果应该掉下来,当玩家与其中一个糖果碰撞时,它应该消失。这是我的代码:
-(void)populate {
for (int i = 0; i < 2; i++) {
[self generate];
}
}
-(void)generate {
Y = (arc4random() % 280) - 140;
bonbon = [SKSpriteNode spriteNodeWithImageNamed:@"Bonbon.png"];
bonbon.size = CGSizeMake(20, 20);
bonbon.name = @"bonbon";
bonbon.physicsBody.categoryBitMask = bonbonCategory;
bonbon.position = CGPointMake(Y, 500);
bonbon.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:bonbon.size.width/2];
bonbon.physicsBody.dynamic = YES;
[bonbon addChild:bonbon];
}
-(void)didBeginContact:(SKPhysicsContact *)contact
{
if ([contact.bodyA.node.name isEqualToString: @"wallLeft"] || [contact.bodyB.node.name isEqualToString: @"wallLeft"])
{
[hero.physicsBody applyImpulse: CGVectorMake(100, 60)];
self.jumpDirection = YES;
}
else if ([contact.bodyA.node.name isEqualToString: @"bonbon"] || [contact.bodyB.node.name isEqualToString: @"bonbon"])
{
[world enumerateChildNodesWithName:@"bonbon" usingBlock:^(SKNode *node, BOOL *stop) {
PointsLabel *pointsLabel = (PointsLabel *)[self childNodeWithName:@"pointsLabel"];
[pointsLabel increment];
NSLog(@"didContactBonbon");
[bonbon removeFromParent];
NSLog(@"removedFromParent");
}];
}
else {
[hero.physicsBody applyImpulse: CGVectorMake(-100, 60)];
self.jumpDirection = NO;
}
}
我希望你理解我的问题。目前,根本没有糖果下降。如果您需要更多信息,请不要犹豫。
迎接
编辑:我希望格式化现在更好。我是一个新手,我很抱歉愚蠢的错误:)这是在我的MyScene.m中,当用[self populate]调用initWithSize方法中的populate时;我收到消息信号SIGABRT。我做错了什么?
答案 0 :(得分:0)
我认为问题是您要将名为SKSpriteNode
的{{1}}添加到自己:
bonbon
尝试将- (void)generate {
...
bonbon = [SKSpriteNode spriteNodeWithImageNamed:@"Bonbon.png"];
...
[bonbon addChild:bonbon];
}
添加到bonbon
个实例。
要使用SKScene
个实例,您必须创建SKView
并将UIViewController
view
类提供给它。你可以在你的故事板中做到这一点。
然后,在你的viewController中:
SKView
这是一个非常简单的示例,但如果您想了解更多信息,建议您阅读本教程:Sprite Kit Tutorial for Beginners。