【发布时间】:2014-02-04 02:52:17
【问题描述】:
我必须为大学编写一个游戏,我试图让一堵静态墙成为玩家的障碍,这样玩家就无法穿过它。
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;
}
}
目前,如果我从屏幕左侧开始并进入墙壁,碰撞工作正常,然后当我移动到墙壁的另一侧时,碰撞不起作用,然后当我移动到右侧时屏幕边缘和移动到墙的碰撞在墙的右侧起作用,但随后我可以穿过墙的左侧。我已经编写了左右墙壁碰撞的代码。
【问题讨论】:
-
您应该使用
Rectangle表示您的墙和玩家边界,如果他们使用Intersects(),则采取相应的行动。见msdn.microsoft.com/en-us/library/…。额外提示:当您的播放器每帧移动的像素多于墙的宽度时,它将穿过它:您可能希望查看连续碰撞检测。