gpt4 book ai didi

java - 无法让子弹以正确的角度射击?

转载 作者:行者123 更新时间:2023-12-01 07:30:57 26 4
gpt4 key购买 nike

我在尝试让子弹以我设定的角度发射时遇到了一些麻烦。我正在使用 eclipse 和 java。

我的代码:

x += (int) (spd * Math.cos(dir));
y -= (int) (spd * Math.sin(dir));`

感觉它不起作用的原因是因为它被强制转换为 int,这可能导致它如此不准确。但为了让它绘制矩形,它需要整数。

当输入 dir 为 0 时,效果很好,并且会向右射击。问题是当我输入 90 时,它不是直接向上拍摄,而是稍微向左射击。

知道如何解决这个问题吗?谢谢!

最佳答案

不,您犯了一个典型的错误:Java 三角函数需要弧度,而不是度数。你应该通过的不是90分,而是90分。是 π/2.0。

因此请务必通过乘以 π/180.0 将角度(以度为单位)转换为弧度。

对于 C、C++、Java、JavaScript、C# 和我所知道的所有其他语言都是如此。我无法说出使用度数表示角度的单一语言。

double radians = dir*Math.PI/180.0;
x += (int)(spd*Math.cos(dir));
y -= (int) (spd * Math.sin(dir));` // I don't know why you do this. Funny left-handed coordinate system.

速度是速度 vector 的大小。所写的方程仅将速度表示为 (vx, vy) 分量。

如果你想要位移,你必须乘以一个时间步长:

vx = speed*Math.cos(angle);
vy = speed*Math.sin(angle);
dx = vx*dt;
dy = vy*dt;
x += dx; // movement in x-direction after dt time w/ constant velocity
y += dy; // movement in y-direction after dt time w/ constant velocity

如果涉及加速度(例如重力),您应该以同样的方式计算速度随时间的变化。

关于java - 无法让子弹以正确的角度射击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583562/

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