2013-04-14 56 views
0

我有一個簡單的2D自上而下的生存遊戲,玩家只需「逃跑」/不與屏幕上的敵人每輪相遇30秒。精靈未能正確更新

每增加一級,每個敵人的數量就會增加。

的問題

我的一個敵人類型是在搜索/休眠狀態,直到玩家來對待它有一定的距離,那麼它是一個追逐的狀態,並保持這種方式,直到回合結束。

在前一輪屏幕上只有30個左右敵人的情況下,所有行爲都可以正常工作。然而,當我開始接近60+敵人的數量時,這個特定的敵人似乎會追趕玩家一段時間,然後似乎又回到睡眠狀態 - 考慮到以下情況,這似乎很奇怪;

public override void Update(SpriteManager inManager) 
{ 
    this.spriteRectangle.X = (int)position.X; 
    this.spriteRectangle.Y = (int)position.Y; 

     if (this.collisionRectangle.Intersects(inManager.player.spriteRectangle)) 
      this.spriteState = SpriteState.Chasing; 

     if (this.spriteState == SpriteState.Chasing) 
     { 
      CheckForPlayer(inManager); 
      if (this.spriteRectangle.Intersects(inManager.player.spriteRectangle)) 
      { 
       inManager.player.spriteState = SpriteState.Dead; 
      } 
     } 


    base.Update(inManager); 
} 
private void CheckForPlayer(SpriteManager inManager) 
{ 
    if (this.position.X > inManager.player.position.X) 
     this.position.X -= X_SPEED; 
    else 
     this.position.X += X_SPEED; 

    if (this.position.Y > inManager.player.position.Y) 
     this.position.Y -= Y_SPEED; 
    else 
     this.position.Y += Y_SPEED; 
} 

任何人都可以擺脫任何光線到爲什麼他們認爲這個問題是存在的,我唯一的想法是,高精靈(最大值爲108),也許他們都沒有時間來檢查的球員,雖然當我更多地思考這件事時,這是毫無意義的。

乾杯

+1

你可以進一步調試嗎?檢查它何時停止移動,如果狀態是「追逐」或者它確實切換了狀態。也許這可能是一個更多的敵人更多的滯後問題? – Cyral

+0

玩家狀態有問題 - 非常感謝讓我檢查:) –

回答

1

沒有完整的代碼很難說,但我把它這是一個小錯誤的地方。你應該嘗試調試它並檢查狀態是否爲Chasing或者它是否確實改變了狀態。我也遇到了一些對象滯後的問題(可能不是問題),因此也可能是一種可能性。