我的程序中有两个按钮。左按钮用于制动(降低速度),右按钮用于速度(增加速度)。没有任何点击,汽车有默认速度。并且存在最小(0.3)和最大(2)速度。现在,我在这里写了这个:
private float _speed = 1f;
if (ButtonClicked) {
if (brake) {
float tempSpeed = _speed;
tempSpeed -= 0.05f;
if (tempSpeed <= 0.3) {
//
} else {
_speed -= 0.05f;
}
}
if (speed) {
float tempSpeed = _speed;
tempSpeed += 0.1f;
if (tempSpeed >= 2) {
//
} else {
_speed += 0.1f;
}
}
} else {
float tempSpeed = _speed;
if (tempSpeed < 1) {
_speed += 0.1f;
}
if (tempSpeed > 1) {
_speed -= 0.1f;
}
}
我不喜欢的部分是'ButtonsClicked'的'else'部分。这是dafault汽车速度的一部分。我增加或减少速度。由于这种增加或减少,汽车行驶看起来并不好。我怎样才能让它变得更好?我的意思是,当没有任何点击时,那么良好的恒定车速不会增加或减少?
答案 0 :(得分:1)
我认为问题在于,一旦达到默认速度,它将不断加速/制动以保持该速度。既然你的问题并不能很好地解释问题,我们肯定不知道。
这是我的意思的一个例子,您需要围绕默认速度创建一个“死区”:
private final float MAX_SPEED = 2f;
private final float MIN_SPEED = 0.3f;
private final float DEFAULT_SPEED = 1f;
private final float ACCEL_SPEED = 0.1f;
private final float BRAKE_SPEED = 0.05f;
private float _speed = DEF_SPEED;
if (ButtonClicked)
{
if (accelerate)
{
_speed = Math.min(_speed + ACCEL_SPEED, MAX_SPEED);
}
if (brake)
{
_speed = Math.max(_speed - BRAKE_SPEED, MIN_SPEED);
}
}
else
{
// only modify the speed if its far off to
// prevent it from constantly accelerating and braking
// (modify the 0.5f to increase/decrease the 'dead zone')
if (Math.abs(_speed - DEFAULT_SPEED) > 0.5f)
{
// slowly reset to default speed
if (_speed < DEFAULT_SPEED)
_speed += ACCEL_SPEED;
if (_speed > DEFAULT_SPEED)
_speed -= BRAKE_SPEED;
}
}