好的,现在,我的Game1课程(主课程)中有碰撞检测。 例如:我的球员和球之间的矩形碰撞。 我不希望这些碰撞出现在我的Game1类中。 在什么课程中人们经常检查碰撞检测以及如何检查?
先谢谢。
答案 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
}
我相信这样的事情。由于球是圆形的,矩形不是最好的,但我不能说从头顶到底是完美的。正如我所说,自从我使用它已经有一段时间了,但这应该给你一个大致的想法!