-2

我正在制作一个自上而下的坦克游戏,但我似乎无法让子弹的准确性达到 100% 它要么只是关闭,要么只是取决于我的鼠标位置

我正在使用下面的公式来计算到达目标的角度(MousePosition)

double dx = MousePosition.x - TankPosition.x;
double dy = MousePosition.y - TankPosition.y;
double angle = Math.atan2(dy, dx);

double tx = Math.cos(angle) * speed;
double ty = Math.sin(angle) * speed;

x += tx;
y += ty;
4

1 回答 1

3

我猜您的问题是整数与浮点问题,以及四舍五入的问题。如果您使用整数,它会在每次更新时对您的结果进行四舍五入。这意味着根据您的鼠标位置,它可能会出现(如果您的鼠标位于不受舍入影响的位置)或略微偏离,并且会根据所述目标位置看似随机地变化,这听起来像您对问题的描述. 您将希望将位置跟踪为浮点数,并仅在使用它进行绘制时将其舍入,而不是在对其进行计算时。

于 2013-01-12T22:53:08.783 回答