2012-11-05 40 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