我正在使用 SDL2 图形库用 C++ 编写游戏。我在我的游戏中使用具有继承性的类来定义实体。
Entity
-> Player
-> BadGuy
-> Bullet
在这个例子中,Player、BadGuy 和 Bullet 都是 Entity 的子类。我这样做是为了在我的游戏中存储一个实体列表,并遍历每个实体以更新和渲染它们。因此,每个实体都有一个唯一的 update()
来定义它们的行为。
我遇到的问题是,在更新方法中,不同的实体无法“看到”彼此。如果 Player
的实例想要检查 Bullet
的实例是否与其发生碰撞,我必须将所有实体的列表作为参数传递给 update ()
供其检查。在您考虑更新方法可能需要引用的所有内容之前,这看起来还不错。游戏 map 、任意游戏状态信息和其他内容都必须作为参数传递给 update()
才能使用。
有没有简单的解决方案?或者使用更好但仍然相似的编程模式?任何建议将不胜感激。
最佳答案
您可以使用简单的消息传递。当您更新游戏世界时,您会检查碰撞并向任何相互碰撞的对象发送消息。这通常伴随着组合优于继承。阅读this .
关于c++ - 游戏实体更新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382932/