gpt4 book ai didi

java - 长方体碰撞

转载 作者:行者123 更新时间:2023-12-01 05:44:42 24 4
gpt4 key购买 nike

我想做一个游戏,其中的角色是一个可以旋转的长方体, map 的其余部分是轴对齐的长方体。除了角色之外的所有内容都是静态的,所以我想知道查找角色是否与 map 中的任何部分发生碰撞的最佳算法是什么。任何教程/代码/建议将不胜感激:)

此外,如果有帮助的话,角色只会在 Y 轴上旋转。

最佳答案

在角色仅绕其平行于 Y 轴的轴旋转的特殊情况下,与另一个轴对齐的矩形棱柱的碰撞检测减少为:

  1. 检查角色的 Y 间隔是否与另一个棱镜的 Y 间隔相交。

  2. 检查两个棱柱对应的XZ截面是否相交,这相当于两个旋转矩形之间的碰撞检测问题。

如果以上两个问题的答案都是肯定的,那么棱镜才会重叠。

将特定问题简化为重叠间隔和相交(旋转)矩形的问题后,每个任务都有许多良好的代码资源。第一个任务非常简单:

重叠间隔

两个闭区间 [a,b] 和 [c,d] 相交当且仅 c ≤ b 且 a ≤ d。这里我们还假设间隔的符号是一致的,即 a ≤ b 且 c ≤ d(否则根据需要交换端点以使其一致)。

相交的旋转矩形

对此特定问题的高度评价的答案是 here 。我为一个稍微更普遍的问题编写的 Lua 实现,Shortest distance between two rectangles ,包括我提到的“提前退出”优化(矩形中的边界圆和顶点)on this thread 。如果旋转的矩形相交,我的 Lua 代码将返回“false”,否则返回它们之间的距离。对于 Java 目的,在冲突情况下返回值为零。

关于java - 长方体碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com