关于碰撞检测的非常基本的问题。 XNA初学者

时间:2011-08-29 16:46:02

标签: c# xna

好的,现在,我的Game1课程(主课程)中有碰撞检测。 例如:我的球员和球之间的矩形碰撞。 我不希望这些碰撞出现在我的Game1类中。 在什么课程中人们经常检查碰撞检测以及如何检查?

先谢谢。

1 个答案:

答案 0 :(得分:4)

我会创建一个名为'CollisionManager'的类,这样你就可以编写这个类中的所有碰撞,并在你的Game类中使用它们。你基本上可以称之为你想要的,因为它是个人喜好。无论你认为什么都适合它。

可以在此处找到碰撞检测的示例:example。归功于本文的作者,而不是我自己。

App Hub可以找到更多资源,您可以在那里找到有关XNA的更多信息,而不仅仅是碰撞。

希望它有所帮助!

编辑:

基本上你有CollissionManager类,它拥有游戏中碰撞所需的所有功能。例如,你询问了一个球拍和一个球。因此,您可以使用Paddle和Ball作为参数编写函数。然后你可以检查它是否发生碰撞。

protected boolean PaddleBallCollision(Rectangle paddle, Rectangle ball)
{
 if (paddle.Intersects(ball)) return paddleHit= true;
}

在您的游戏课程中,您可以执行以下操作:

using projectname.CollisionManager;

在更新中(我认为至少,自从我使用XNA已经过去了一年),您可以通过调用您的函数来检查它们是否发生冲突。

boolean paddleHit =  CollisionManager.PaddleBallCollision(paddle,ball)

if (paddleHit == true)
{
   //TODO when hit
}

我相信这样的事情。由于球是圆形的,矩形不是最好的,但我不能说从头顶到底是完美的。正如我所说,自从我使用它已经有一段时间了,但这应该给你一个大致的想法!