Вопрос

У меня есть общая ситуация, когда у вас есть две переменные (xspeed и YPeed), которые я хочу самостоятельно установить на ноль, когда они падают ниже minspeed, и выход, когда они оба нуля.

Какой был бы самый эффективный метод?В настоящее время у меня есть два метода (метод 2 уборщика), но мне было интересно, если вы, ребята, знаете лучший способ ....

Method1:

bool isZeroX = Math.abs(xSpeed)< minSpeed;
bool isZeroY = Math.abs(ySpeed)< minSpeed;

if(isZeroX && isZeroY) return -1;
else if(isZeroX) xSpeed = 0;
else if(isZeroY) ySpeed = 0;
.

Method2:

if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
if(ySpeed==0 && xSpeed==0) return -1;
.

Это было полезно?

Решение

Вы можете сделать

if(-minSpread < xSpeed && xSpeed < minSpeed) {
    xSpeed = 0;
    if(-minSpread < ySpeed && ySpeed < minSpeed) {
        ySpeed = 0;
        return -1;
    }
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
    ySpeed = 0;
}
.

Другие советы

Я предпочитаю свой второй пример, потому что это самый читаемый.Предпочитаете читабельность по поводу эффективности, если вы не можете доказать, что вы должны оптимизировать.

Возможно, сделайте элегантный логический метод, чтобы увидеть, движется ли объект / остановлен:

boolean isStopped() {
    if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
    if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;

    return (ySpeed==0 && xSpeed==0);
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top