gpt4 book ai didi

java - 有效的多边形碰撞检测

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:13 25 4
gpt4 key购买 nike

我正在尝试让人们能够捡起我制作的 for 循环来更新每个硬币,每个硬币都有一个循环来检查是否有任何玩家正在触摸它,所以它就像每个刻度/帧 250*25=6250 个循环,有什么建议如何使其更有效吗?这样我在玩手机时 ping 就不会下降到 30?

屏幕渲染代码:

for (int i = 0; i < coins.size(); i++) {
Coin coin = coins.get(i);
coin.update(delta);
}

金币更新方法:

for (int i = 0; i < GameScreen.players.size(); i++) {
Player player = GameScreen.players.get(i);
if (Intersector.overlapConvexPolygons(polygon, player.getPolygon())) {
//Picked up give coins blahblahblah
break;
}
}

硬币大小为250

players.size 为 25

最佳答案

我首先从玩家的角度进行检查——硬币不需要检查是否有任何东西与它们发生碰撞,除非除了玩家之外还有其他东西与硬币交互。根据玩家的形状,让玩家拾取其位置一定半径内的所有硬币可能会很有效 - 如果您想这样做,只需找到玩家到每个硬币的距离,然后拾取在该距离内的硬币。 (实际上,检查距离平方更有效——结果是相同的)。如果您不想使用拾取器本身的半径,那么如果您仅针对可能重叠的距离内的硬币来测试每个玩家,它仍然会大大减少所需的时间。

关于java - 有效的多边形碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120016/

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