我正在开发一个基于3D瓷砖的游戏,我使用的是AABB碰撞检测。对于玩家正在相交的每一个立方体,我发现玩家与立方体相交最少的轴,并沿着那个轴将播放器从立方体中推出来。
根据多维数据集签入的顺序,这可能在沿多个多维数据集的边缘滑动时造成问题。我创建了一个图表来解释这个问题:
对于解决这个问题最有效的方法,有什么想法吗?或者有什么更好的方法来处理碰撞反应?
谢谢。
发布于 2010-10-11 01:33:16
一个离散的实现迫使您在系统中注入一些连续的数学,只有在需要时(多维数据集/方向重叠)。
对于每个立方体c1,c2 ..。在检查时,用户多维数据集(uc)与之交叉的ci,您想知道哪个多维数据集首先被“触摸”--只有一个,就像在现实生活中一样。考虑uc的d方向,取词中uc的数量(重叠),找出cu在“触碰”词时的位置。
确定哪个立方体被“触摸”了第一个cj (在d轴上需要最多回滚的那个--时间越快),并且只使用这个来计算碰撞反应。
不仅你会达到精确。但是如果所有的立方体都在移动,有不同的速度等等,它会有帮助。
发布于 2010-10-11 00:33:01
从您的图表,它似乎您想要最小的移动,以尽量减少球员和立方体之间的重叠。每个重叠的立方体都会尝试将玩家“推”到两个正交的方向。你能在每个方向上选择最大推力的最小推力吗?
发布于 2010-10-11 01:43:15
当您的两个(或更多)固定立方体可以组合成一个较大的矩形时,您可能会实现一种混合的宽阶段。首先对较大的矩形进行测试。它将给你的绿色检查标记的结果,并比检查每个立方体更快无论如何。然后,在此之后,只有在需要的情况下,检查单个多维数据集。
https://stackoverflow.com/questions/3902492
复制相似问题