2012-11-05 77 views
1

我在碰撞時遇到了一些問題,在最終確定如何實際使其碰撞後,我只能讓pacman重置爲設置位置並且不知道如何讓他留在他應該的地方。碰撞,正在重置的位置

 player.update(); 

     for (int y = 0; y < NrOfTilesY; y++) 
     { 
      for (int x = 0; x < NrOfTilesX; x++) 
      { 

       if (tileArray[x, y] is Nest) 
       { 
        Rectangle rectW = tileArray[x, y].Bounds(); 
        Rectangle rectP = Player.pacmanBounds; 
        if(rectW.Intersects(rectP)) 
        { 
         Player.pacmanBounds.X = 32; 
         Player.pacmanBounds.Y = 32; 
        } 
       } 
      } 
     } 

回答

0

在移動播放器之前,請複製其位置。

如果它移動後發生碰撞,請將其重新放置到最後位置。

另外,我認爲值得注意的是,您不需要測試棋盤上的每塊棋子,而只需測試棋子周圍的棋子。玩家的位置應該讓你知道它是哪塊瓷磚,並且應該很容易找到與該瓷磚相鄰的瓷磚。

+0

對不起,我真的很新鮮,我的球員不是陣列的一部分,怎麼去檢查位置=? – user1680348

+0

玩家有一個位置,對吧?陣列中的每個瓦也有一個?以簡化的方式,玩家的X和Y可以很容易地在你的方塊的X和Y的索引中進行翻譯。 – LightStriker

+0

Player.pacmanBounds.X <---即時猜測這就是它=?但是如果我將值改爲前面的Player.pacmanBounds.X-1,它會碰撞到右邊,但如果我嘗試去左邊它會飛過牆壁。 – user1680348