Java 物体 角度 运动_Java-小行星类型游戏中的正确运动

目前,我有某种小行星游戏,可以在这里看到:

但是,当用户在船舶仍在行驶时按下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值的情况下完成此操作?进行最少的修改?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值