从随机位置不断下降的糖果

时间:2014-10-06 19:45:38

标签: ios sprite-kit

我在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。我做错了什么?

1 个答案:

答案 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