不,你犯了一个典型的错误:Java 三角函数需要弧度,而不是度数。你应该通过的不是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.
速度是速度矢量的大小。所写的方程仅将速度表示为 (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
如果涉及加速度(例如重力),您应该以相同的方式计算速度随时间的变化。