gpt4 book ai didi

Java 和 Box2D - 哪个物体应该被视为子弹?

转载 作者:搜寻专家 更新时间:2023-11-01 00:54:49 26 4
gpt4 key购买 nike

我正在使用 java 和 box2D(来自 libgdx)创建游戏。

此时遇到一个问题,下图的红体下落时,有时没有碰到平台(那也是动态体)因为它以很高的速度下落并且碰撞检测不连续。

enter image description here

我的问题是,由于两个对象都是动态的,而且我想确保检测到平台与红色物体之间的碰撞,我是否应该将两个物体都设置为子弹体?只有红色的 body ?还是只有平台?

注意事项:

  • 红色的 body 以极高的速度落下

  • 平台不高速移动

谢谢你,圣诞快乐!

最佳答案

我会为红色主体启用子弹模式,并为平台主体关闭子弹模式。

至少在 Box2D 2.3.2 的 C++ CCD 代码中(参见 b2World::SolveTOI),将检查给定时间步长的所有联系人是否需要对其进行 CCD 处理。本质上,具有子弹启用主体或具有非动态主体(静态或运动主体)的触点在 CCD 过程中继续。因此启用子弹的物体越少,该方法完成得越快。

因此,在红色主体和平台主体上都启用子弹模式并不是最佳选择(从算法上讲),尽管只有 3 个绘制主体的性能差异不太可能引人注意。考虑到您只关心红色物体与平台之间的碰撞,一个启用子弹的装置足以让它们的接触继续进行 CCD 处理。

至于为什么我要启用红色子弹(而不是平台),那是因为,正如您所说,它将是两者中最快的,并且在我看来这与子弹概念更匹配.

请注意,如果 - 比如说在未来 - 你最终拥有更多平台并且平台本身需要无法相互隧道,但你注意到它们隧道(即使以较慢的速度),然后子弹启用平台(而不是红色的 body )将是我要走的路。

关于Java 和 Box2D - 哪个物体应该被视为子弹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325104/

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