2015-11-05 7 views
-3

Я пытаюсь выяснить, попал ли мой объект с небольшой снисходительностью. Но это не работает. Вот мой код:Если условие не выполняется

public boolean isClicked(float x) { 

    if (Gdx.input.isTouched() && Gdx.graphics.getHeight() - Gdx.input.getY() >= this.getY() && Gdx.graphics.getHeight() - Gdx.input.getY() <= this.getY() + this.getHeight() && this.getWidth() >= Gdx.input.getX() && x < this.getY() + this.getHeight() * 1.2f && x > this.getY() - this.getHeight() * .2f) { 
     return true; 
    } 

    return false; 

ответ

1

Всегда старайтесь использовать условия таким образом и использовать кронштейн для многократного условия:

if (Gdx.input.isTouched() && ((Gdx.graphics.getHeight() - Gdx.input.getY()) >= this.getY()) && ((Gdx.graphics.getHeight() - Gdx.input.getY()) <= (this.getY() + this.getHeight())) && (this.getWidth() >= Gdx.input.getX()) && (x < ((this.getY() + this.getHeight()) * 1.2f)) && (x > ((this.getY() - this.getHeight()) * .2f))) { 
     return true; 
} 
return false; 
1

Вы должны попробовать и форматировать длинные строки для удобства чтения и использование скобки.

if (Gdx.input.isTouched() 
    && (Gdx.graphics.getHeight() - Gdx.input.getY()) >= this.getY() 
    && (Gdx.graphics.getHeight() - Gdx.input.getY()) <= (this.getY() + this.getHeight()) 
    && this.getWidth() >= Gdx.input.getX() 
    && x < (this.getY() + this.getHeight() * 1.2f) 
    && x > (this.getY() - this.getHeight() * .2f) 
    ) { 
    return true; 
} 

Это также позволяет закомментировать начало любого из промежуточных линий (например, с помощью //), чтобы локализовать проблему.

Смежные вопросы