我花了很长时间试图弄清楚如何根据角度(以度为单位)移动子弹
我将弧度定义为:
public static double toRadians(int angle) {
return (90.0 - angle) * (Math.PI / 180);
}
这是我实际移动子弹的代码。xMov 和 yMov 可以为负数,并在每个刻度上添加到当前位置。
我从来没有真正与 Radians 合作过,但发现上面的代码使 0 北,90 东等,这就是我想要的。我只是无法弄清楚为什么子弹不会正确的方向。看起来 X 是正确的,但 Y 不是。
double x= Math.cos(Utilities.toRadians(mvmtAngle));
double y= Math.sin(Utilities.toRadians(mvmtAngle));
xMov += x* 4;
yMov += y* 4;
谢谢!- 提示
编辑:学位设置得很好(来自输入)
编辑 2:渲染代码:
((Graphics2D)g).rotate(Utilities.toRadians(barrelAngle), xStart, yStart);
g.fillRect(xStart - 1, yStart, 2, BARREL_SIZE);
((Graphics2D)g).rotate(-(Utilities.toRadians(barrelAngle)), xStart, yStart);