2012-03-09 114 views
2

我做的更新()部分中的碰撞检测,这是代码:碰撞检测工作不

  if (player.playerRect.Intersects(turtleRect)) 
     { 
      turtleRect.X = turtleRect.X - 60; 
     } 

当我运行游戏,并与龟碰撞,没有任何反应。我试图改变

turtleRect.X = turtleRect.X - 60; 

turtleRect.X = turtleRect.X - 600; 

因为我以为我没注意到的变化。尽管如此,没有发生。然后我认为这只是0123这样我把它放在Update()方法中,在if语句之外,它就起作用了。现在我意识到这是

   if (player.playerRect.Intersects(turtleRect)) 
     { 

     } 

但我不明白什么是错的。我将playerRect放在不同的类中,但我将它导入到主类中。我所知道的矩形因为

  turtleRect.X -= 1; 
在Update()方法

移动。 乌龟在屏幕上移动。我测试了很多东西,然后查找了它,但仍然无法弄清楚。这是矩形碰撞,所以有人可以指导我如何进行像素碰撞?任何帮助表示赞赏。

+1

CJ如果你想指示你已经知道了这一点。在下面添加一个答案并将其标记为这样。把**解决**不是如何堆栈溢出的作品。 – ahsteele 2012-03-10 18:08:58

回答

0

我解决了这个,我只是说:

playerRect = new Rectangle((int)player.position.X, (int)player.position.Y, player.playerRect.Width, player.playerRect.Height); 

感谢所有帮助!

0

我们真的需要更多的信息,可能是因为你没有更新碰撞后的坐标或其他一些东西。你是否使用过调试器来遍历应用程序以确定碰撞后发生了什么?其次:

if (playerRect.Intersects(turtleRect)) 
{ 
    turtleRect.X = turtleRect.X - 60; 
} 

这不是冲突解决,只会有部分成功的影响,如果碰撞来自于你需要寻找到的东西更强大的X轴左边。 XNA平台游戏初学者套件具有相当全面的碰撞检测功能,这可能是一个很好的开始。

+0

你需要什么信息?我可以发布全班或任何特定的部分。 – 2012-03-10 01:35:55