Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从任意位置连续下落的棒棒糖_Ios_Sprite Kit - Fatal编程技术网

Ios 从任意位置连续下落的棒棒糖

Ios 从任意位置连续下落的棒棒糖,ios,sprite-kit,Ios,Sprite Kit,我在SpriteKit中遇到了以下问题:我的目标是让棒棒糖不断从屏幕顶部掉落。玩家可以收集这些糖果。每隔0.8秒左右,另一个棒棒糖就会掉下来,当玩家与其中一个棒棒糖相撞时,它就会消失。这是我的代码: -(void)populate { for (int i = 0; i < 2; i++) { [self generate]; } } -(void)generate { Y = (arc4random() % 280) - 140;

我在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;

    }


}
-(void)填充{
对于(int i=0;i<2;i++){
[自我生成];
}
}
-(作废)生成{
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-withcircleofradius:bonbonbon.size.width/2];
bonbon.physicsBody.dynamic=是;
[bonbon addChild:bonbonbon];
}
-(无效)didBeginContact:(SKPhysicsContact*)联系人
{
if([contact.bodyA.node.name IsequalString:@“wallLeft”]| |[contact.bodyB.node.name IsequalString:@“wallLeft”])
{
[hero.physicsBody applyImpulse:CGVectorMake(100,60)];
self.jumpDirection=是;
}
else if([contact.bodyA.node.name IsequalString:@“bonbon”]| |[contact.bodyB.node.name IsequalString:@“bonbon”])
{
[world enumerateChildNodesWithName:@“bonbon”usingBlock:^(SKNode*node,BOOL*stop){
PointsLabel*PointsLabel=(PointsLabel*)[self childNodeWithName:@“PointsLabel]”;
[点标签增量];
NSLog(@“didContactBonbon”);
[bonbon removeFromParent];
NSLog(@“从父级移除”);
}];
}
否则{
[hero.physicsBody applyImpulse:CGVectorMake(-100,60)];
self.jumpDirection=否;
}
}
我希望你能理解我的问题。目前,根本没有邦邦掉落。如果您需要更多信息,请随时询问

问候


编辑:我希望现在的格式更好。我是一个新手,我为愚蠢的错误感到抱歉:)这是在我的MyScene.m中,什么时候用[self-populate]调用initWithSize方法中的populate;我收到了sigart的信息信号。我做错了什么?

我认为问题在于,您正在将名为
bonbonbon
SKSpriteNode
添加到自身中:

- (void)generate {
    ...
    bonbon = [SKSpriteNode spriteNodeWithImageNamed:@"Bonbon.png"];
    ...
    [bonbon addChild:bonbon];
}
尝试将
bonbon
添加到
SKScene
实例中


要使用
SKView
实例,您必须创建一个
UIViewController
,并为其
视图提供
SKView
类。你可以在情节提要中这样做

然后,在viewController中:

@implementation GameViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView * skView = (SKView *)self.view;

    // Configure the scene
    SKScene *scene = [SKScene sceneWithSize:self.view.bounds.size];

    // You can add objects to your scene
    [scene addChild:bonbon];

    // Present the scene.
    [skView presentScene:scene];
}

@end

这是一个非常简单的示例,但如果您想了解更多信息,我建议您阅读本教程:。

如果您能让我们更容易地帮助您,您会得到更好的帮助。因此,请正确格式化您的代码。这很简单:在Xcode中,选择Edit>Select All,然后选择Editor>Structure>Re-indent。此外,我看到了名为
populate
generate
的方法,但我没有看到任何调用它们的代码(除了
populate
调用
generate
)。我将其更改为[SKScene addChild:bonbon];我得到了错误“没有选择器'addChild'的已知类方法”,这是因为没有类方法
+(void)addChild:
,但是有一个实例方法
-(void)addChild:
,所以你必须将它用于
SKScene
的实例(对象),而不是类本身。我编辑了我的答案,希望对你有所帮助。