我偶然发现了一个问题,我无法找到答案。我正在使用Xcode的SK模板来创建一个iOS游戏。我是初学者,所以请耐心等待。
基本上我有这段代码:
SKAction *releaseBubbles = [SKAction sequence:@[
[SKAction performSelector:@selector(createBubbleNode)onTarget:self],
[SKAction waitForDuration:speed]]];
[self runAction: [SKAction repeatAction:releaseBubbles
count:300]];
在
中执行-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
我在-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
中将级别更改为我的游戏,当我更改级别时,它也应该更改该速度参数。当然,这不起作用,因为我相信我的动作是在场景初始化时开始的,我永远不会切换参数。
我需要做的是连续填充屏幕,并以一定的速度(相对于关卡)出现气泡。
我真的不知道如何解决这个问题,因为在我看来,我需要以某种方式停止并重新启动动作序列......
期待您的宝贵意见。
答案 0 :(得分:1)
要使用气泡连续填充屏幕,您可以使用update:
的{{1}}方法。这是怎么做的。
首先,添加一个属性,该属性将存储您上次添加气泡的日期。
SKScene
然后,将您的@property(nonatomic, strong) NSDate *lastBubbleCreationDate;
方法更改为:
update:
最后,在您的-(void)update:(CFTimeInterval)currentTime
{
// Create new bubble every 5s.
if (ABS([_lastBubbleCreationDate timeIntervalSinceNow]) > 5)
{
[self createBubbleNode];
}
}
方法中,您必须存储创建最后一个气泡的时间:
createBubbleNode
您还需要致电-(void)createBubbleNode
{
// Your code here
// Set the date to now.
_lastBubbleCreationDate = [NSDate date];
}
来设置createBubbleNode
的初始值。您可以使用_lastBubbleCreationDate
方法执行此操作。只需将此方法添加到场景实现中:
didMoveToView:
在下一级别中,您可以更改- (void)didMoveToView:(SKView *)view
{
// Creates first bubble and sets the initial value of the _lastBubbleCreationDate
[self createBubbleNode];
}
值以更频繁地创建气泡,从而使游戏更加困难。