【发布时间】:2014-07-13 22:25:19
【问题描述】:
我试图让精灵在它离开屏幕后重新生成,但没有运气。
#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 没有给我一个错误,“尖峰”节点只是从屏幕上移开并且不会自行重置。我已经改变了条件中的值,但同样的事情发生了。这就像条件被忽略了。
【问题讨论】:
-
您有条件地检查尖峰的位置,只会在您创建尖峰时的这段代码中发生,而不是每一帧。你明白吗?
-
@prototypical 这很有道理。如果我希望它更新每一帧,我会在哪里放置条件?我把它放在 currentTime 更新方法中没有用。
-
是的,你可以把它当作更新方法,它确实有效。您可能错误地实现了它。查看当前答案,应该可以。我还建议您在学习的早期就了解调试器,因为它可以为您节省大量时间。
标签: xcode sprite-kit sprite