Ios 方法未正确生成精灵

Ios 方法未正确生成精灵,ios,sprite-kit,skspritenode,skphysicsbody,skaction,Ios,Sprite Kit,Skspritenode,Skphysicsbody,Skaction,现在我在屏幕顶部有五块砖,它们都在同一个y位置,并且间隔相等。我想有五个以上的休息产卵以外的场景顶部,并滑下每5秒。当新砖块向下滑动时,我希望先前的砖块向下滑动,为新砖块腾出空间。我希望这个序列永远继续下去。我希望新的砖块具有与旧砖块相同的特性,例如当球击中它们时,它们会发生反应 用我输入的代码来完成这项工作,我得到了一块砖块,然后向下滑动。此外,新的砖块与旧砖块的作用方式不同,它不像物理世界的一部分。如何使5块砖块产卵,然后向下滑动并应用与其他砖块相同的属性 此代码是我为生成更多砖块而添加的代

现在我在屏幕顶部有五块砖,它们都在同一个y位置,并且间隔相等。我想有五个以上的休息产卵以外的场景顶部,并滑下每5秒。当新砖块向下滑动时,我希望先前的砖块向下滑动,为新砖块腾出空间。我希望这个序列永远继续下去。我希望新的砖块具有与旧砖块相同的特性,例如当球击中它们时,它们会发生反应

用我输入的代码来完成这项工作,我得到了一块砖块,然后向下滑动。此外,新的砖块与旧砖块的作用方式不同,它不像物理世界的一部分。如何使5块砖块产卵,然后向下滑动并应用与其他砖块相同的属性

此代码是我为生成更多砖块而添加的代码:

-(void) spawnMoreBricks:(CGSize)size {
    for (int i = 0; i < 5; i++) {
        SKSpriteNode *brick = [SKSpriteNode spriteNodeWithImageNamed:@"brick"];
        //resize bricks
        brick.size = CGSizeMake(60, 30);
        //position it
        brick.position = CGPointMake(self.size.width/2, self.size.height);

        SKAction *wait = [SKAction waitForDuration:5];
        SKAction *spawn = [SKAction runBlock:^{[self addChild: brick];
            SKAction *move = [SKAction moveByX:0 y:-80 duration:3];
            [brick runAction: move];
        }];

        SKAction *spawnSequence = [SKAction sequence:@[wait, spawn]];
        SKAction *repeatSequence = [SKAction repeatActionForever:spawnSequence];

        [self runAction:repeatSequence];
    }
}
-(void)砖块:(CGSize)大小{
对于(int i=0;i<5;i++){
SKSpriteNode*brick=[SKSpriteNode SPRITENODEWITHIMAGENAME:@“brick”];
//调整砖块大小
brick.size=CGSizeMake(60,30);
//定位
brick.position=CGPointMake(self.size.width/2,self.size.height);
SKAction*wait=[SKAction waitForDuration:5];
SKAction*spawn=[SKAction runBlock:^{[self addChild:brick];
SKAction*move=[SKAction moveByX:0 y:-80持续时间:3];
[砖块运行动作:移动];
}];
SKAction*spawnSequence=[SKAction sequence:@[wait,spawn]];
SKAction*repeatSequence=[SKAction repeatActionForever:spawnSequence];
[自我运行:重复序列];
}
}
此代码将砖块添加到场景中,当它初始化时,砖块会对球与砖块碰撞以及其他一切做出反应:

- (void) addBricks:(CGSize)size {
    for (int i = 0; i < 5; i++) {
        //create brick sprite from image
        SKSpriteNode *brick = [SKSpriteNode spriteNodeWithImageNamed:@"brick"];
        //resize bricks
        brick.size = CGSizeMake(60, 30);
        //psoition bricks
        int xPos = size.width/5 * (i+.5);
        int yPos = size.height - 25;
        brick.position = CGPointMake(xPos, yPos);
        brick.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:brick.frame.size];
        brick.physicsBody.dynamic = NO;
        brick.physicsBody.categoryBitMask = brickCategory;

        //add bricks to scene
        [self addChild:brick];
    }
}
-(void)addBricks:(CGSize)大小{
对于(int i=0;i<5;i++){
//从图像创建砖精灵
SKSpriteNode*brick=[SKSpriteNode SPRITENODEWITHIMAGENAME:@“brick”];
//调整砖块大小
brick.size=CGSizeMake(60,30);
//烧结砖
int xPos=大小.宽度/5*(i+.5);
int yPos=尺寸。高度-25;
brick.position=CGPointMake(xPos,yPos);
brick.physicsBody=[skphysicsbodyWithRectangleOfSize:brick.frame.size];
brick.physicsBody.dynamic=否;
brick.physicsBody.categoryBitMask=brickCategory;
//向场景中添加砖块
[自我添加的孩子:砖块];
}
}

根据您的第一段代码的外观,当您设置新砖块的x位置时,它们都在屏幕顶部,这可能解释了为什么您只看到一块新砖块?此外,您也没有像对原始砖块那样对新砖块应用相同的physicsbody属性。请使用{}图标添加代码,而不是“代码段”按钮(仅适用于JS/HTML/CSS),我怀疑此代码
runBlock:^{[self addChild:brick];
give
brick
被重新分配。