c++ - 游戏实体更新方法

标签 c++ class game-engine

我正在使用 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/

相关文章:

delphi - 如何 "scan"当前安装的 VCL 组件的完整列表

javascript - 既然我添加了计数器变量和间隔,为什么我的动画无法正常工作?

javascript - 无限房间,相机偏移计算

c++ - 创建dll文件

c++ - C++错误: expected constructor, destructor, or type conversion before ‘(’ token

c++ - 自定义类的正确构造函数

c++ - 从Lua创建C++类或 “entity”(或类似的东西)

c++ - 将 Lua 绑定(bind)胶水代​​码与我的游戏引擎的其余部分隔离开来

java - 处理字符串 : Java client & C++ server 的正确方法是什么

c++ - igraph (c) 访问邻接表的每个元素