gpt4 book ai didi

java - java中的投篮预测算法

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

我当前的游戏开发爱好有一个问题。我有两个单位,它们在二维空间中是敌对的。一个人直接向对手射击,所以如果他移动,就会打偏。但另一个应该预测对手的 Action 并“向前”射击。

假设第一个单元是 A,第二个单元是 B。我可以计算它们的距离,我有它们的视角,还有它们移动的速度。 (玩家速度和子弹速度是不同的常数)

我尝试用近似值来计算 A 和 B 之间的距离,然后使用 Bv 和方向角来计算 B 在下一秒的位置,然后将其除以两个玩家的距离除以子弹速度。但这样效率很低,效果也不好。

float distanceK = MathUtil.distance(unit.x, unit.y, opponent.x, opponent.y) / Constants.BULLET_VELOCITY;

float x = (float) (opponent.x + (Constants.UNIT_FORWARD_VELOCITY * distanceK * Math.cos(opponent.orientationAngle)));
float y = (float) (opponent.y + (Constants.UNIT_FORWARD_VELOCITY * distanceK * Math.sin(opponent.orientationAngle)));

float angleToRotate = MathUtil.angleBetweenUnitAndPoint(unit, x, y);

在上面的示例中,我然后使用 angleToRotate 变量来确定我必须旋转多少才能击中对手,但旋转也需要一些时间(54deg/s)

我需要一个更优化的解决方案来解决这个问题。

a)当你站立不动时预测对手的 Action 。

b)当你移动时预测对手的移动。

最佳答案

您可以使用空间的 vector 表示。所以 BA 代表从 A 的角度来看 A 和 B 之间的 vector 。然后您可以添加单元 B 的速度 vector Bv。所得 vector 将是 B 和 Bvp 之间的 vector ,即 B 在未来某个时间 t 的预测位置。对于移动计算,您还需要考虑 A 的移动 vector 。

关于java - java中的投篮预测算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54904727/

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