使用旋转的奇怪运动

时间:2015-01-22 05:15:38

标签: 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一次移动一个像素(轻松处理碰撞) 如果有人可以帮助我,我真的很感激,因为我真的被困住了。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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