java - 使用旋转的奇怪运动

标签 java rotation

我正在用 Java 编写一个游戏,我遇到了一个非常非常新手的问题,但我终究无法弄明白。我想要做的就是将对象的旋转设置为朝向鼠标(效果很好),然后它在旋转的方向(朝向鼠标)接收到初始推力。 旋转似乎工作正常,但问题是运动很奇怪而且不正常。我认为 GIF 最能说明问题: enter image description here 是的,我不确定发生了什么。如您所见,旋转设置得非常完美,但是当对象移动时,就会发生不好的事情。所以我会给出我认为相关的移动代码片段。此代码每刻更新一次(1/60 秒)

dSpeed *= defaultFriction;
speed.x += (float)(dSpeed * Math.cos(rotation - 90));
speed.y += (float)(dSpeed * Math.sin(rotation - 90));

speed.x *= defaultFriction;
speed.y *= defaultFriction;

speed.x = Calculation.clamp(speed.x, -maxSpeed.x, maxSpeed.x);
speed.y = Calculation.clamp(speed.y, -maxSpeed.y, maxSpeed.y);

goalPos.x = pos.x + speed.x;
goalPos.y = pos.y + speed.y;

然后我基本上做一个 while 循环来使用 goalPos 一次移动对象一个像素(以轻松处理碰撞) 如果有人可以帮助我,我将非常感激,因为我真的被困住了。谢谢!

最佳答案

您的问题似乎是您将 rotation - 90 传递给 Math.cosMath.sin。但是,由于 Math.cosMath.sin 使用弧度,您应该使用 rotation - Math.PI/2Math .toRadians(rotation - 90) 取决于您的 rotation 变量的单位。

请注意,Math.asinMath.acosMath.atanMath.atan2 都是返回弧度。

关于java - 使用旋转的奇怪运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28081687/

相关文章:

java - 是否可以合并同等大小的mp3格式文件,然后在Java中检索、修改每个单元文件并添加新的文件?

java - jar 不会显示图像

java - 如何比较两个 MyDouble 值?

html - 旋转<td> 中的文本,但不允许增加<td> 的宽度?

c# - 对大小为 n 的数组进行左旋转操作

c++ - OpenGL - 2D敌人不旋转面对玩家

python - Matplotlib - 在对数刻度上旋转文本,其中角度不正确地舍入

c++ - OpenGL 中的 3 轴四元数旋转

java - 将文本文件转换为 csv 格式 Java

java - "Iterable<Element> cannot be cast to List<Element>"- 't ` 列表 ` a type of ` 是可迭代的吗?