我正在制作一个类似于 Terraria(在 C# 中使用 XNA 4.0)的游戏,其中包含图块和实体。我已经创建了计算(使用轴对齐的边界框)如果 NPC 等会以当前速度与瓷砖碰撞的函数。
想要一个函数来计算轴对齐矩形第一次碰到瓷砖时的位置(瓷砖存储在一个二维数组中,每个瓷砖是 1 个单位长,半个瓷砖是 0.5 等等),基本上就像从矩形当前所在的位置遍历到它将到达的位置,直到它碰到一个图块并返回该位置。(对于更高的帧率,我更喜欢处理效率更高的东西)。
我试着让它这样如果物体以它的当前速度碰撞,那么它就不会移动。但是,如果它快速移动的物体,那么它会导致它在可能的碰撞之前停下来。无论如何,我想要关于矩形第一次碰撞的信息,以使物体反弹等等(以及使物体无法穿过墙壁等)。
这个问题非常具体,如果我需要澄清任何事情,请告诉我。