我试图让精灵在离开屏幕后重新生成,但没有运气。
#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没有给我一个错误,“尖峰”节点只是移出屏幕而不会重置。我已经改变了条件中的值,但同样的事情发生了。就像条件被忽略一样。
答案 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);
}
}