【发布时间】:2012-04-03 23:30:24
【问题描述】:
我目前正在 XNA 中开发块世界引擎,但无法让碰撞检测和处理正常工作。世界位于一个以 ( z * width * width + y * width + x ) 为索引的数组中,并包含由字节表示的不同块。一切都很好,花花公子。或者我是这么想的。
我尝试了不同的碰撞处理技术,我目前正在使用计算玩家/相机方向的版本,在将其添加到位置之前,我用半个矢量检查每个单独的向量(x、y 和 z)单位偏移(以补偿 1.0 的块大小)相对于世界,并且仅在结果为零时应用它。到目前为止,一切都很好。现在,当我直接走进一个角落时,问题就出现了,因为 x 轴和 z 轴直到我进入立方体后才会相交/碰撞。
那么我该如何正确计算方块世界中的碰撞检测和处理呢?
我真的很想就此事提供一些意见,最好是更高/概念级别的意见,但当然也欢迎代码示例。
为了进一步解释我的情况,根据@A-Type 的回复:
所以,让我们在这里更准确地帮助我理解你。我的角色在各个方向都只有一个单位,这应该会让事情变得更容易。
首先,你认为我应该先更新我的角色位置,然后再检查碰撞吗?这将是我进行碰撞检测的首选方式,但如果它更容易,我会先检查并在可能的情况下稍后移动。
好吧,我知道玩家只能与 8 个立方体相交(在您的示例中为 12),并且舍入似乎也是一个非常好的主意,但我不太清楚 12 个立方体的过渡(再次在你的例子,我的应该是 8) 到只有 3。这会不会导致同样的问题,即不考虑角色立方体的角?
我曾尝试实现这一点但失败了,所以我认为更多的理论可能会做到这一点。 (我实际上已经让碰撞检测工作了,但在那些情况下,我完全失去了我的速度,而不仅仅是在碰撞方向上。)
谢谢你的时间!
卡尔
【问题讨论】: