我必须为大学编写一个游戏,我试图让静态墙成为玩家的障碍,这样玩家就无法通过它。
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;
}
}
目前,如果我从屏幕左侧开始并进入墙壁,碰撞工作正常,那么当我移动到墙壁的另一侧时,碰撞不起作用,然后当我移动到右侧屏幕的边缘和移动到墙壁右侧的碰撞工作,但然后我可以穿过墙壁的左侧。我已经在墙的左侧和右侧写了碰撞代码。
答案 0 :(得分:0)
1)定义8个顶点,4在玩家的边界矩形原始位置的坐标处,4为它的新位置。 2)定义由这些顶点构成的所有可能的三角形。 3)如果其中一个三角形与一个墙壁的边缘相交,那么它们在这个框架中相撞。 4)通过获得交点的最小和最大位置,您可以知道碰撞的坐标。