游戏实体更新方法

时间:2017-02-22 04:47:53

标签: c++ class game-engine

我正在使用SDL2图形库编写C ++游戏。我正在使用带继承的类来定义游戏中的实体。

Entity
-> Player
-> BadGuy
-> Bullet

在此示例中,Player,BadGuy和Bullet都是Entity的子类。我这样做,以便我可以在我的游戏中存储实体列表,并迭代每个实体来更新和渲染它们。因此,每个实体都有一个唯一的update()来定义他们的行为。

我遇到的问题是,在更新方法中,不同的实体不能彼此“看到”。如果Player的实例想要检查Bullet的实例是否与它发生冲突,我将必须将所有实体的列表作为参数传递给update()以供其检查。在您考虑更新方法可能需要引用的所有内容之前,这似乎并不那么糟糕。游戏地图,任意游戏状态信息和其他内容都必须作为update()使用的参数传递。

有一个简单的解决方案吗?还是使用更好但仍然相似的编程模式?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用简单的消息传递。当您更新游戏世界时,您会检查碰撞并发送任何相互碰撞的对象的消息。这通常与组合而不是继承相结合。阅读this