2016-01-25 17 views
0

我正在製作一個視差滾動地面的反應遊戲。我的敵人產卵計時器位於didMoveToView,現在出現我的問題。遊戲速度加快,但是我的產卵方法保持不變,所以如果敵人以相同的頻率產生,那麼它會很無聊。 下面是代碼:給定時器的替代產卵方法

//inside the didMoveToView  
SKAction *addEnemRand = [SKAction performSelector:@selector(addRandomEnemy) onTarget:self]; 
SKAction *addEnemRandWait = [SKAction waitForDuration:2]; 
SKAction *addEnemRandAll = [SKAction sequence:@[addEnemRandWait, addEnemRand]]; 
SKAction *addEnemRandAllForever = [SKAction repeatActionForever:addEnemRandAll]; 
[self runAction:addEnemRandAllForever]; 

是否有人知道的方式來產卵敵人以適當的方式?

這是移動地面的代碼(有兩個)。也許它有可能將產卵速度與地面位置聯繫起來?:

-(void)addGround:(SKSpriteNode *)sprite withSpeed:(int)speed { 

if (ground.position.x+ground.frame.size.width/2 < 0) { 

    ground.position = CGPointMake(self.size.width+ground.size.width/2, ground.size.height/2+1); 
} 

// movement 
ground.position = CGPointMake(ground.position.x-speed, ground.position.y);  
} 

感謝您的幫助! (代碼在目標c請)

編輯:所以它似乎GamePlayKit可以幫助我,但我不知道如何實現它的產卵方法。我在互聯網上閱讀了一些教程,但它沒有幫助我。有人能幫我嗎 ?

回答

0

我認爲它值得研究randomizing that GamePlayKit provides來做到這一點。

看看這個tutorial您實現了「組合的基本規則系統與另一個隨機分佈處理的敵人重生行爲」

+0

這是絕對是一個很好看,但沒例如,我無法幫助我瞭解有關產卵到地面運動的問題。 – ccdev

0

您可以使用地面位置,或者使用管理產卵時間時間,因爲水平已經開始。這是我的代碼在更新方法爲simular任務,使用時間過去了。

性質initWithSize方法:

self.lastUpdateTimeInterval = 0; 
self.timeSinceEnemyAdded = 0; 
self.addEnemyTimeInterval = 1.5; 
self.totalGameTime = 0; 

更新方法:

-(void)update:(NSTimeInterval)currentTime { 

     if (self.lastUpdateTimeInterval) { 
      self.timeSinceEnemyAdded += currentTime - self.lastUpdateTimeInterval; 
      self.totalGameTime += currentTime - self.lastUpdateTimeInterval;  
     } 

     if (self.timeSinceEnemyAdded > self.addEnemyTimeInterval && !self.gameOver) { 
      [self addEnemy]; 
      self.timeSinceEnemyAdded = 0; 
     } 

     self.lastUpdateTimeInterval = currentTime; 

     if (self.totalGameTime > 480) { 
      self.addEnemyTimeInterval = 0.5; 
      self.minSpeed = -160; 
     } else if (self.totalGameTime > 240) { 

      self.addEnemyTimeInterval = 0.65; 
      self.minSpeed = -150; 
     } else { 

     //Something else 

     } 
} 

你只能勉強地lenght屬性,如果你想

+0

我正在尋找沒有時間的產卵方法。你能給我一個使用地面位置的產卵方法的例子嗎? – ccdev

+0

在你的addGround方法中存儲私有屬性「self.ground.position = CGPointMake ...」中的「地」,並在更新方法中使用該屬性,在時間的情況下,檢查「if(self.ground.position> someNumber )然後{self.speed =一些速度}「(你還需要使速度變量 - 私有屬性,改變它) –

+0

我可以說如果(self.ground.position> someNumber)然後產生敵人? – ccdev