我在Update()部分进行了碰撞检测,这是代码:
if (player.playerRect.Intersects(turtleRect))
{
turtleRect.X = turtleRect.X - 60;
}
当我运行游戏并与乌龟碰撞时,没有任何反应。我试过改变
turtleRect.X = turtleRect.X - 60;
要
turtleRect.X = turtleRect.X - 600;
因为我以为我没有注意到这种变化。然而,什么也没发生。然后我认为这只是
turtleRect.X = turtleRect.X - 600
所以我把它放在了if语句之外的Update()方法中并且它起作用了。现在我意识到这是
if (player.playerRect.Intersects(turtleRect))
{
}
但我无法弄清楚这有什么问题。我将playerRect放在另一个类中,但是我将它导入了主类。我知道矩形正在移动,因为
turtleRect.X -= 1;
在Update()方法中。 乌龟在屏幕上移动。我已经测试了很多东西,然后查了一下,我仍然无法弄明白。这是矩形碰撞,所以有人也可以指导我如何进行每像素碰撞吗?任何帮助表示赞赏。
答案 0 :(得分:0)
我们确实需要更多的信息,可能是你没有在碰撞后更新坐标或其他一百万个。您是否使用调试器逐步执行应用程序以确定碰撞后发生的情况?其次:
if (playerRect.Intersects(turtleRect))
{
turtleRect.X = turtleRect.X - 60;
}
这不是碰撞解决方案,如果碰撞来自X轴左侧,您需要查看更强大的内容,它只会产生部分成功的效果。 XNA平台发射器套件具有相当全面的碰撞检测功能,这可能是一个很好的起点。
答案 1 :(得分:0)
我解决了这个问题,我刚补充说:
playerRect = new Rectangle((int)player.position.X, (int)player.position.Y, player.playerRect.Width, player.playerRect.Height);
感谢您的帮助!