【问题标题】:Collision, position being reset碰撞,位置被重置
【发布时间】:2012-11-06 00:18:40
【问题描述】:

我的碰撞有点问题,在最终弄清楚如何让它碰撞之后,我只能让 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;
                    }
                }
            }
        }

【问题讨论】:

    标签: c# xna collision


    【解决方案1】:

    在移动播放器之前,复制其位置。

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

    另外,我认为值得注意的是,您不需要测试棋盘上的每个图块,而只需要测试玩家周围的图块。玩家的位置应该告诉你它在哪个图块上,并且应该很容易找到与该图块相邻的图块。

    【讨论】:

    • 对不起,我真的很陌生,我的播放器不是数组的一部分,如何检查位置=?
    • 玩家有位置,对吧?数组中的每个图块也有一个?以一种简化的方式,玩家的 X 和 Y 可以很容易地在你的瓷砖 X 和 Y 的索引中转换。
    • Player.pacmanBounds.X
    • 没关系,我在吃午饭的时候重读了你的答案,然后它击中了我,它有效,谢谢。
    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多