C# 碰撞,位置被重置

C# 碰撞,位置被重置,c#,xna,collision,C#,Xna,Collision,我的碰撞有点问题,在最终弄清楚如何使它真正碰撞后,我只能让吃豆人复位到一个设定的位置,而不知道如何让他呆在他应该呆的地方 player.update(); for (int y = 0; y < NrOfTilesY; y++) { for (int x = 0; x < NrOfTilesX; x++) { if (tileArray[x, y] is Ne

我的碰撞有点问题,在最终弄清楚如何使它真正碰撞后,我只能让吃豆人复位到一个设定的位置,而不知道如何让他呆在他应该呆的地方

     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;
                    }
                }
            }
        }
player.update();
对于(int y=0;y
移动播放机之前,请复制其位置

如果在移动后发生碰撞,请将其重新放置到最后一个位置


另外,我认为值得注意的是,您不需要测试板上的每个瓷砖,只需要测试播放器周围的瓷砖。玩家的位置应该告诉你它在哪个磁贴上,并且应该很容易找到与该磁贴相邻的磁贴。

对不起,我对这个很陌生,我的玩家不是数组的一部分,如何检查位置=?玩家有位置,对吗?阵列中的每个磁贴也有一个?以一种简单的方式,玩家的X和Y可以很容易地在你的tiles.player.pacmanBounds.X的X和Y索引中转换。没关系,我在吃午饭的时候重新阅读了你的答案,它击中了我,很有效,谢谢。