将碰撞处理在基于瓷砖的游戏中
Where to put collision handling in tile based game?
im当前正在开发C 控制台游戏。GAM由带有2D瓷砖的董事会课程组成。
我还为玩家,箭头和项目提供游戏课程。
我需要能够处理玩家/箭头/项目之间的每一个碰撞,我想知道两个可能的解决方案之间。
1)在每个瓷砖上都保留所有游戏作品,并在该瓷砖上放置所有游戏作品,并在瓷砖上放一个餐厅(游戏机)并将逻辑放在那里。
2)有一个外部"碰撞"类,该类将扫描所有瓷砖/零件以碰撞并在那里处理它们。
您怎么看?
我会创建一个看起来像这样的函数:
void Object::OnCollision(Object collision_with); // "Object" is a generic type
// of an object in the game
此功能将处理碰撞。为了找到碰撞,每当对象进入瓷砖(etterile)时,您可以搜索该瓷砖中包含的对象,并调用其OnCollision函数。当然,这意味着将项目保留在各自瓷砖中的某些清单中。
所以我基本上建议您的第一个解决方案。
另外,如果您的董事会太大,则可能需要更多时间来完成所有操作。因此,如果它很大,请考虑您提出的第二个解决方案。
在我的iOS游戏中(这不是基于瓷砖,但我认为可能存在一些重叠),我在游戏循环中有一个收集探测器类,检查演员是否要碰撞。如果他们是每个演员,则通过Resolvecollision WasgrisionWith(Actor)方法通过了另一个演员。这样,每个演员都可以决定如何与另一个演员碰撞,而CollisionDetector班则不必知道个人演员及其行为。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 等<thing>效于char32_t
- 类似于strcat()的函数出现问题
- 在C++游戏中与库存系统作斗争
- 换位表导致测试失败(但在游戏中运行良好)
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- Craps游戏问题,忽略if语句
- 贪吃蛇游戏 - 为什么蛇会跳过瓷砖?
- 贪吃蛇游戏 - 食物瓷砖的随机数生成器
- SFML游戏C++中的瓷砖地图碰撞
- 数据库模块摘要(独立于)游戏的其他模块
- 将碰撞处理在基于瓷砖的游戏中
- 在C++中使我的游戏独立于图形 API
- 我试图做一个程序,只是显示瓷砖2玩家将开始在拼字游戏,但它一直崩溃
- 开发特定于游戏的GUI
- 如何在基于 2D 瓷砖的游戏中检测和解决碰撞