静止墙的碰撞

时间:2014-01-24 22:59:43

标签: c# xna collision

我必须为大学编写一个游戏,我试图让静态墙成为玩家的障碍,这样玩家就无法通过它。

            if (rectangle1.Right == (wallRect.Left) && rectangle1.Bottom >= wallRect.Top && rectangle1.Top <= wallRect.Bottom)
        {
            rightMovement = false;
        }
        else
        {
            rightMovement = true;
        }

以下是控制输入的代码。

        if (rightMovement == true)
        {
            if (currentKeyboardState.IsKeyDown(Keys.Right) || currentGamePadState.DPad.Right == ButtonState.Pressed)
            {
                player1.Position.X += playerMoveSpeed;
            }
        }

目前,如果我从屏幕左侧开始并进入墙壁,碰撞工作正常,那么当我移动到墙壁的另一侧时,碰撞不起作用,然后当我移动到右侧屏幕的边缘和移动到墙壁右侧的碰撞工作,但然后我可以穿过墙壁的左侧。我已经在墙的左侧和右侧写了碰撞代码。

1 个答案:

答案 0 :(得分:0)

1)定义8个顶点,4在玩家的边界矩形原始位置的坐标处,4为它的新位置。 2)定义由这些顶点构成的所有可能的三角形。 3)如果其中一个三角形与一个墙壁的边缘相交,那么它们在这个框架中相撞。 4)通过获得交点的最小和最大位置,您可以知道碰撞的坐标。