【问题标题】:Game Entity Update Methods游戏实体更新方法
【发布时间】:2017-07-11 23:56:01
【问题描述】:

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

Entity
-> Player
-> BadGuy
-> Bullet

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

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

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

【问题讨论】:

    标签: c++ class game-engine


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 2011-05-05
      • 1970-01-01
      相关资源
      最近更新 更多