Java 角度变成弧度,然后变成dx。不像我想的那样工作
我目前正在开发一个非常简单的游戏,只是为了进一步学习Java。我确实有一些这方面的经验,但不多。 这个游戏应该是像鸡一样的入侵者 这就是我的问题。 我创建了一个Bullet类,玩家在单击空格时会发射子弹。 在构造函数中,我需要一个角度作为int参数。然后我将其转换为弧度,并使用Math.cos和Math.sin将其转换为子弹在每个轴上移动的方向:Java 角度变成弧度,然后变成dx。不像我想的那样工作,java,Java,我目前正在开发一个非常简单的游戏,只是为了进一步学习Java。我确实有一些这方面的经验,但不多。 这个游戏应该是像鸡一样的入侵者 这就是我的问题。 我创建了一个Bullet类,玩家在单击空格时会发射子弹。 在构造函数中,我需要一个角度作为int参数。然后我将其转换为弧度,并使用Math.cos和Math.sin将其转换为子弹在每个轴上移动的方向: public Bullet(int x, int y, int angle) { super(x, y); double rad =
public Bullet(int x, int y, int angle) {
super(x, y);
double rad = Math.toRadians(angle);
this.dx = Math.cos(rad) * speed;
this.dy = Math.sin(rad) * speed;
}
速度是一个静态的最终值
更新项目符号时,只需将dx和dy添加到x和y变量中
当玩家射击时,我创建了3个角度为270、265和275的子弹,都从同一个位置开始:
GamePanel.bullets.add(new Bullet(x + (width - Bullet.width) / 2, y + 5, 270));
GamePanel.bullets.add(new Bullet(x + (width - Bullet.width) / 2, y + 5, 265));
GamePanel.bullets.add(new Bullet(x + (width - Bullet.width) / 2, y + 5, 275));
我所期望的是3发子弹,一发直上,另外两发偏右或偏左,速度相同,但左发子弹比右发子弹偏多:
我不知道为什么左边的和右边的不一样。我觉得我遗漏了一些非常明显的东西,但我无法找到它。问题是x和y是整数。忘了吧:) 基本上,我在x和y(int)上加上了dx和dy(它们是双精度的)。 由于Java将double转换为int的方式,负数的取整方式有所不同,这导致x更偏左 将x和y更改为自身加倍(然后在绘图时将其强制转换为整数)解决了此问题 谢谢你和所有帮助我的人:D
解决了
dx
和dy
的类型是什么?@Bathsheba:由于Math#sin
和Math#cos
的缘故,它们会加倍。不一定。我想确切地知道。这个触发器乍一看是正确的。你在x+(width-Bullet.width)/2
后面的意图是什么?你想在商之后加x,还是在除以2之前把所有的东西加在一起?你的x
和y
是整数吗?