我有一个游戏,有一个船对象(带有 JavaFX 多边形)。当我用按键(通过事件处理程序和动画计时器)移动飞船时,它会向上移动。当我放手时,它应该将加速度更改为 -4,因此它会不断地从船的速度中减去 -4 直到其假定达到 0。但是,因为船可以向所有方向移动,所以速度有时为负值当船前进时。因此,当我尝试在速度为负时停止船只时,这种情况不会发生,并且船只继续向后移动。
我尝试了一些计算,当船的速度为负并向前移动时,但它有点太复杂了,我相信它不起作用。
以下是 Ship 计算速度 x 方法的代码:
AnimationTimer calculateVelocityX = new AnimationTimer() {
@Override
public void handle(long now) {
if (getAcceleration() == 17)
setVelocityX(getVelocityX() + (Math.cos(Math.toRadians(getRotation())) * (getAcceleration() * 0.01)));
else if (acceleration == -4)
setVelocityX(getVelocityX() + (Math.cos(Math.toRadians(getTempRotation())) * (getAcceleration() * 0.01)));
}
};
AnimationTimer shipAccelerationTimer = new AnimationTimer() {
@Override
public void handle(long now) {
getShipImage().setLayoutX(getShipImage().getLayoutX() + getVelocityX());
getShipImage().setLayoutY(getShipImage().getLayoutY() - getVelocityY());
wrapShip();
if (getVelocityX() == 0 && getVelocityY() == 0) {
getCalculateVelocityX().stop();
getCalculateVelocityY().stop();
setAcceleration(17);
setCounterOne(0);
setCounterTwo(0);
setCounterThree(0);
getShipAccelerationTimer().stop();
}
}
};
此代码将使船向后移动,因为由于小数精度,速度实际上永远不会达到 0。然而,如果我说当速度小于0时,根据我上面所说这是不可能的。
货物沿指定方向移动时的速度标志图像:
https://i.stack.imgur.com/5sxNi.png
因此,我不能只拥有“当速度小于 0 时”,因为就像在象限 2、3、4 中一样,我可以向前移动,但 x、y 速度要么为负,要么两者都有。
月关宝盒
烙印99
相关分类