gpt4 book ai didi

java - 根据角度和速度更新坐标

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:33 27 4
gpt4 key购买 nike

我在这里看到了很多关于这个谜语的答案,但每次我尝试实现这些答案时,它们似乎都不起作用。我想回复一些答案,但不能。也许是因为我的“声誉”水平?

总之,这是一个简单的游戏坐标问题。对大多数人来说很简单,但对我来说不是。 (数学烂透了..铁杆)

我在屏幕中间有一艘宇宙飞船。它不会脱离旋转 (user.fAngle)。它确实具有纯粹用于计算其在世界中的位置的速度(user.dVelocity)。

现在我让船以 1 的速度移动。这意味着无论它“去”到哪里,它都以该速度移动(同样,纯粹为了 map 坐标目的)。目前还没有减速或加速……但最终会。所以速度最终会成为一个变化的变量。

这是我现在拥有的..

    double radians = (Math.PI / 180) * ( user.fAngle); 
worldX = (int)(worldX + user.dVelocity * Math.cos(radians));
worldY = (int)(worldY + user.dVelocity * Math.sin(radians));

user.fangle 当然 = 0-359

当您开始游戏时,worldX 和 worldY 从 0 开始。我正在尝试根据船舶的角度和硬编码速度修改每一帧的 worldX 和 worldY。

在大多数情况下,这是可行的。但奇怪的是,在某些时候,坐标会卡住。或者他们会停在 0 而不会进入底片。同样,这只发生在特定时间和特定角度。

我看到的另一个问题是,当数字发生变化时,它们总是以一致的速度变化。换句话说,假设北为 0。如果我以 5 的角度移动,worldY 变量应该变化很大,但 worldX 应该变化很小。这不会发生。

在我的调试中,我确定 user.fAngle 确实在 0-359 的范围内。我不确定还要检查什么。

感谢阅读,感谢您的帮助。

最佳答案

您的问题来自以下事实:

int x = 0;
x = x + 0.5; // rounding down : x == 0
x = x + 0.5; // rounding down : x == 0

你需要一个浮点变量来记住位置。

float x = 0;
x = x + 0.5; // x == 0.5
worldX = (int)x; // worldX == 0
x = x + 0.5; // x == 1
worldX = (int)x; // worldX == 1

这将解决问题。

关于java - 根据角度和速度更新坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217478/

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