c++ - 在基于图 block 的游戏中将碰撞处理放在哪里?

标签 c++

<分区>

我目前正在开发一款 C++ 控制台游戏。 该游戏由一个带有 2D 瓷砖阵列的棋盘类组成。

我还有针对玩家、箭头和元素的游戏部件类。

我需要能够处理玩家/箭头/元素之间的每一次碰撞,我想知道两种可能的解决方案。

2) 有一个外部的“CollisionDetector”类,它将扫描所有瓷砖/碎片的碰撞并在那里处理它们。

你怎么看?

最佳答案

我会创建一个看起来像这样的函数:

void Object::OnCollision(Object collision_with); // "Object" is a generic type 
                                                 // of an object in the game

此函数将处理碰撞。 为了找到碰撞,每当一个对象进入一个图 block (enterTile) 时,您可以在该图 block 中搜索其中包含的对象,并调用它们的 OnCollision 函数。 这当然意味着将项目保留在板上,作为它们各自磁贴中的一些列表。

所以我基本上建议您使用第一个解决方案。

另请注意,如果您的看板太大,可能需要更多时间才能完成所有看板。因此,如果它相当大,请考虑您提出的第二种解决方案。

关于c++ - 在基于图 block 的游戏中将碰撞处理放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218798/

相关文章:

c++ - 在 VS2008 中可视化树

c++ - 枚举映射对重构具有鲁棒性

C++ Utf-8转换使用atlconv.h/W2A和中文文本

C++ STL 容器 :where can we use them

C++:cout 和指向 char 的指针的无法解释的行为

c++ - 使用哪个版本的 OpenGL?

c++ - 关于ifstream : error ‘std::ios_base::ios_base(const std::ios_base&)’ is private

c++ - C++)E0349没有运算符匹配这些操作数

c++ - 我曾尝试将 cvCaptureFromCAM 用于 2.2,但我被告知 cv::Mat 无法使用它

c++ - 为什么我的文件是空的?