2014-09-29 90 views
0

我在這裏有一個方法,可以增加或減少位置以便到達人物需要到達的設置位置,如果方框需要移動到左側,它會很好,但如果需要移動到右邊它似乎沒有工作,我知道有與它一個問題,我只是無法弄清楚將對象移動到某個位置

public void doMovements(float delta) { 
    if (!movements.isEmpty()) { 
     Vector2 vec = movements.get(0); 

     if (pos.x > vec.x) 
     pos.x -= VELOCITY * delta; 
     else if (pos.x < vec.x) 
     pos.x += VELOCITY * delta; 

     System.out.println(pos.x); 

     if (pos.x - vec.x < CLOSE_VEC) { 
     movements.remove(movements.get(0)); 
     System.out.println(movements.size()); 
     } 
    } 

    rect.y = pos.y; 
    rect.x = pos.x; 
} 

我需要從一個點到達b點,如果箱子有向左移動它可以很好地工作,但如果它必須向右移動,則會感謝幫助!

+0

我想通了這個問題,問題出在 'if(pos.x - vec.x 2014-09-29 23:57:20

回答

0

我想通了,我被檢查,如果它是在正確的車道問題正確 我需要改變

if (pos.x - vec.x < CLOSE_VEC) { 

if (!(pos.x - vec.x < 0) && pos.x - vec.x < CLOSE_VEC) { 

我需要確保該值不是負數,因此矩形可以向右移動。

0

如果按兩個值的差異計算delta,有時可能是負值。他們的方式你寫它,代碼假設三角洲總是積極的。你確定三角洲是絕對值嗎?

如果delta是正數和負數,那麼您不需要兩個單獨的語句。你這樣做只有一個:

pos.x += VELOCITY * delta; 

只要確保增量爲負時,它應該是,積極當它應該是

+0

增量從不是負數,因爲它是每秒鐘之間的時間,因此它永遠不會等於負數,但我找到了問題,問題是'如果(pos.x - vec.x 2014-09-30 00:53:11

相關問題