【发布时间】:2014-04-02 19:44:14
【问题描述】:
就上下文而言,我正在 iOS 中制作一个砖块破坏游戏,并希望我创建的砖块随着球在场景中反弹而不断地左右移动。
我的代码中有一个方法,当呈现场景时调用一次,它将几行精灵节点作为砖块添加到场景中,如下所示
-(void) addBricks:(CGSize)size {
// add a new row of bricks
for (int j = 1; j <= 3; j++) {
// add top column of bricks
for (int i = 0; i < 5; i++) {
SKSpriteNode *brick = [SKSpriteNode spriteNodeWithImageNamed:@"brick"];
brick.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:brick.frame.size];
brick.physicsBody.dynamic = NO;
brick.physicsBody.categoryBitMask = brickCategory;
int xPos = ((brick.frame.size.width / 2) + 20) + ((brick.frame.size.width / 2) + 30) * i;
int yPos = size.height - (30 * j);
// generate the sequence that the brick will perform
SKAction *moveHorizontal = [SKAction moveToX:xPos + 20 duration:1.0f];
moveHorizontal.timingMode = SKActionTimingEaseOut;
SKAction *moveBack = [moveHorizontal reversedAction];
SKAction *wait = [SKAction waitForDuration:0.4f];
SKAction *backAndForth = [SKAction sequence:@[moveHorizontal, wait, moveBack, wait]];
SKAction *repeatHorizMove = [SKAction repeatActionForever:backAndForth];
brick.position = CGPointMake(xPos, yPos);
// add the brick
[self addChild:brick];
// make it move back and forth
[brick runAction:repeatHorizMove];
}
}
}
我的问题是,虽然场景开始时所有的积木都会向右移动,但它们不会像我希望的那样一遍又一遍地向后移动并重复动作。我认为这可能与以编程方式创建它们时为它们赋予相同的名称有关,但我知道场景保留了所有的砖块,尽管它们具有相同的名称。
我怎样才能让我创建的所有 SpriteNode(砖块)永远来回移动?
【问题讨论】:
标签: ios objective-c sprite-kit