在均匀网格中处理碰撞
Handling collision in a uniform grid
所以目前我正在尝试开发一个2D游戏,其中我有不同的大小的对象。为了性能,我决定使用统一的网格进行碰撞。
我知道对于每个对象,我们将它们存储在网格的相应单元格中以检查碰撞。但是由于我们的对象不是一个点,而实际上是一个矩形,因此在某些情况下(例如当对象与多个单元格重叠时(,我们需要将对象存储在多个单元格中。
当我尝试使用链表实现此数据结构时,会出现问题。对于包含对象链接列表的统一网格数组,每个对象都包含一对指向同一单元格中的上一个和下一个对象的指针。这意味着,如果我在单元格 1 中有对象 A、B、C,如果对象 B 重叠,我就不能使它位于多个单元格中,因为对象 B 已经指向单元格 1 中的对象 A 和 C,并且它不能再指向单元格 2 中的任何其他对象。
一个简单的解决方案就是使用向量或数组,但是有更好的解决方案吗?
使用元素包装器,如下所示:
class Wrapper {
public:
Object *obj;
Wrapper *next, *prev;
}
然后将Wrapper
存储在网格中而不是Object
中。
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 在均匀网格中处理碰撞
- 将碰撞处理在基于瓷砖的游戏中
- C 指针指向一系列指针(带有LinkedList碰撞处理的Hashtable)
- 设置碰撞检测,然后在 2D 游戏中处理碰撞
- 如何处理碰撞并将玩家移回原位?[c++,sfml]
- 我如何处理这种类型的碰撞