Sprite不会在Sprite Kit中重新生成

时间:2014-07-13 22:25:20

标签: xcode sprite-kit sprite

我试图让精灵在离开屏幕后重新生成,但没有运气。

      #import "MyScene.h"

    @implementation MyScene

    -(id)initWithSize:(CGSize)size {    
      if (self = [super initWithSize:size]) {
      /* Setup your scene here */

    self.backgroundColor = [SKColor colorWithRed:0.05 green:0.15 blue:0.2 alpha:1.0];

    SKSpriteNode *pole = [SKSpriteNode spriteNodeWithImageNamed:(@"pole")];
    bamboo.position = CGPointMake (30, 0);
    bamboo.size = CGSizeMake(15, 1136);



    [self addChild: pole];

    SKSpriteNode *pole2 = [SKSpriteNode spriteNodeWithImageNamed:(@"pole")];
    pole2.position = CGPointMake (290, 0);
    pole2.size = CGSizeMake(15, 1136);

    [self addChild: pole2];


    SKSpriteNode *spike = [SKSpriteNode spriteNodeWithImageNamed:(@"spike")];
    spike.position = CGPointMake (45, 600);
    spike.size = CGSizeMake(15, 75);

    SKAction *moveDown = [SKAction moveByX:(0) y:(-10) duration:(.05)];

    [spike runAction:[SKAction repeatActionForever:moveDown]];

    [self addChild: spike];


  }
  return self;
 }


 -(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
if (_spike.position.y < 250) {


    _spike.position = CGPointMake(45, 600);
 }

}

@end

可能是什么问题? Xcode没有给我一个错误,“尖峰”节点只是移出屏幕而不会重置。我已经改变了条件中的值,但同样的事情发生了。就像条件被忽略一样。

1 个答案:

答案 0 :(得分:1)

你应该做的是在更新方法中检查Sprite的位置,你可以试试这个;

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

    _spike = [SKSpriteNode spriteNodeWithImageNamed:(@"spike")];
    _spike.position = CGPointMake (45, 600);
    _spike.size = CGSizeMake(15, 75);

    SKAction *moveDown = [SKAction moveByX:(0) y:(-10) duration:(.05)];

    [_spike runAction:[SKAction repeatActionForever:moveDown]];

    [self addChild:_spike];

    }
    return self;
}

-(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */

    if (_spike.position.y < 250) {

        _spike.position = CGPointMake(45, 600);
    }

}