gpt4 book ai didi

java - 角度变成弧度然后变成dx。不像我想的那样工作

转载 作者:行者123 更新时间:2023-11-30 06:57:59 25 4
gpt4 key购买 nike

我目前正在开发一个非常简单的游戏,只是为了更多地学习 Java。我确实有一些经验,但不多。该游戏应该类似于 Chicken Invaders。

所以这是我的问题。我创建了一个 Bullet 类,玩家点击空格时会发射子弹。在构造函数中,我需要一个角度作为 int 参数。然后我将其转换为弧度并使用 Math.cos 和 Math.sin 将其转换为子弹应在每个轴上移动的方向:

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 颗子弹,一颗直线向上,另外两颗稍微向右或向左,射速相同,但左边一颗比右边一颗稍微偏一点:

An image of the game

我不知道为什么左边的和右边的不一样。我觉得我错过了一些非常明显的东西,但我无法找到它。

最佳答案

问题是 x 和 y 是整数。忘了那个:)基本上,我将 dx 和 dy( double )添加到 x 和 y(整数)。由于 Java 将 double 转换为整数的方式,负数的舍入方式有所不同,这导致 x 更偏向左侧。

将 x 和 y 更改为自身的两倍(然后在绘制时将它们转换为整数)解决了这个问题。

谢谢 RealSkeptic 和大家帮助我 :D

解决了!

关于java - 角度变成弧度然后变成dx。不像我想的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33105021/

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