处理单独类中的碰撞

时间:2013-08-24 16:34:26

标签: c++ file class collision sfml

我目前正在为Ludum Dare编码,我需要能够从上到下的角度处理碰撞。我知道如何正常处理它们,但是我将包括许多可以遇到的事情,所以我想在一个单独的类中处理来自bool返回的冲突。我这样做的方法是为函数提供播放器碰撞盒的输入矩形,然后将所有碰撞存储在函数中。但是,如果我这样做,那么如果我碰到某些东西,我将不得不检查每次移动。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

首先,特别是如果你正在为Ludum Dare制作游戏,天真地检查碰撞并没有错(迭代每个物体并问“我是否与此相撞?”)因为你的游戏很可能很小而你有足够的处理器能力。

据说,这是非常低效的。有两种方法可以改进这一点,它们通常是一起实现的:

  1. 应使用四叉树或其他形式的碰撞优化。这递归地将游戏世界分成象限,每个象限在每个象限内具有指定数量的实体。这意味着你的角色只是检查与少数几个实体的碰撞,而不是所有实体。
  2. 你真的需要一个事件系统。从您的问题来看,您是游戏开发的初学者。这完全没问题,但迭代每个实体只是对计算能力的极大浪费。通过一个事件系统(您可以在互联网上的任何地方了解它们,并且它们已经在SFML中无数次实现),游戏在发生碰撞时被“通知”,而不是“等待它”。
  3. 同样,这两种技术都是先进的,但它带来了游戏开发奇妙有趣和苛刻的世界。一帆风顺。