c++ - 简单的二维碰撞检测c++

标签 c++ 2d collision-detection glreadpixels

我对这一切有点陌生,但我正在尝试用 C++ 制作一个简单的 2D 游戏。 我决定做一种迷宫类型的游戏,为此我正在做的是将迷宫绘制为纹理,然后在我的角色在这个迷宫中移动时使用另一个纹理。

但是,我在碰撞检测方面遇到了很大的困难,因此我的角色不会只是穿过墙壁。有人告诉我可以使用 glReadPixels 来查找背景的颜色,但每当我尝试这样做时,它都会忽略颜色并继续穿过墙壁。

谁能帮我解决这个问题并告诉我该怎么做,因为我在任何地方都找不到任何可以提供帮助的东西。 提前致谢。

最佳答案

根据迷宫类型,如果你只有单位长度的垂直和水平墙壁,你可以用二维数组/矩阵表示迷宫和当前位置,并根据内容决定新位置是​​否可以移动迷宫矩阵中的新位置。

您将不得不对矩阵坐标和屏幕坐标进行一些转换

优点:

  • 你不需要从屏幕上看
  • 迷宫可以比屏幕上显示的更大——只绘制相关部分

缺点:

  • 你只能有“bolck”类型的地形(例如垂直/水平墙)
  • 如果你想添加移动的敌人,碰撞检测可能会太粗糙(你不能“仅仅通过头发/像素”来避免怪物)

关于c++ - 简单的二维碰撞检测c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095076/

相关文章:

algorithm - 仅在平面一侧的两个轴对齐框之间的碰撞检测

c++ - 线程加入 C++ 行为

c++ - 这个指针是右值吗?

optimization - OpenGL四边形渲染优化

c++用新类初始化二维 vector ;默认值更改

c# - 在 Unity 中转身时翻转敌方 Sprite

algorithm - 针对凸多面体形状类型转换胶囊

c++ - 我应该如何在 Qt 中存储指针?

c++ - QuantLib 中的掉期定价

collision-detection - 3D中直线和AABB之间最近点的快速查询