目前,我有某种小行星游戏,可以在这里看到:
但是,当用户在船舶仍在行驶时按下W时,无论船舶的旋转方向如何,它都会以船舶所处的速度移动并增加速度,从而使船舶显得生涩而不协调(很难解释,观看该视频).
这是我正在使用的代码:
public void update(int delta) throws SlickException
{
float hip = speed * delta;
float rotation = image.getRotation();
for (Bullet b : bulletList)
{
b.update(delta);
}
Input input = gc.getInput();
if (input.isKeyDown(Input.KEY_A))
{
image.rotate(rotateLeftSpeed * delta);
if (rotateLeftSpeed > (ROTATE_LIMIT * -1))
{
rotateLeftSpeed -= rotateSpeed;
}
} else
{
if (rotateLeftSpeed < 0)
{
image.rotate(rotateLeftSpeed * delta);
rotateLeftSpeed += rotateSpeed;
}
}
if (input.isKeyDown(Input.KEY_D))
{
image.rotate(rotateRightSpeed * delta);
if (rotateRightSpeed < (ROTATE_LIMIT))
{
rotateRightSpeed += rotateSpeed;
}
}
else
{
if (rotateRightSpeed > 0)
{
image.rotate(rotateRightSpeed * delta);
rotateRightSpeed -= rotateSpeed;
}
}
if (input.isKeyDown(Input.KEY_W))
{
hip = speed * delta;
protation = image.getRotation();
rotation = image.getRotation();
x += hip * Math.sin(Math.toRadians(rotation));
y -= hip * Math.cos(Math.toRadians(rotation));
if (speed < SPEED_LIMIT)
speed += 0.005f;
} else
{
if (speed > 0)
{
System.out.println(offSpeed);
srotation = image.getRotation();
hip = speed * delta;
x += hip * Math.sin(Math.toRadians(protation));
y -= hip * Math.cos(Math.toRadians(protation));
speed -= 0.003f;
}
}
我是否可以在不引入dx和dy值的情况下完成此操作?进行最少的修改?