Скорость автомобиля по умолчанию?
У меня есть две кнопки в моей программе. Левая кнопка для тормоза (уменьшает скорость) и правая кнопка для скорости (увеличивает скорость). Когда ничего не щелкнуло, машина имеет скорость по умолчанию. И есть минимальная (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". Это часть скорости автомобиля по умолчанию. Я увеличиваю или уменьшаю скорость. Перемещение автомобиля выглядит не очень хорошо, из-за этого увеличивается или уменьшается. Как я могу сделать это лучше? Я имею в виду, когда ничего не щёлкнуло, тогда хорошая постоянная скорость автомобиля без увеличения или уменьшения?
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;
}
}