2016-08-24 83 views
0

我想要做的是接受輸入的用戶觸摸,將觸摸的相機座標轉換爲世界座標,然後創建一個矢量以便使用對我的身體施加壓力。 這是我必須爲:基於觸摸輸入在Libgdx中使用力移動物體

Vector3 worldPos = new Vector3(newX, newY, 0); 
    GameScreen.gameCam.unproject(worldPos); 

    newX = worldPos.x; 
    newY = worldPos.y; 

    Vector2 direction = new Vector2(); 

    direction.set((newX - xPos), (newY - yPos)); 
    if (newX <= xPos){ 
     direction.set((xPos - newX), (yPos - newY)); 
    } 

    b2Body.applyForceToCenter(direction, true); 

我知道,這確實是不正確的,在所有儘可能創建矢量去,但座標被正確地轉換。

所以我的問題是,我如何獲得一個精確的矢量,即使在負方向,當我有身體的世界座標和觸摸?

我已經嘗試做一些研究,以便更好地瞭解所有這些,但我有一些麻煩。任何幫助將不勝感激,謝謝你的時間。

回答

1

如果您對下一頁末,newY屏幕觸摸座標和未來改變其對世界COORDS您可以通過減法touchWorldPos得到方向currentObjectPos:

Vector3 worldPos = new Vector3(newX, newY, 0); 
GameScreen.gameCam.unproject(worldPos); 

newX = worldPos.x; 
newY = worldPos.y; 

Vector2 direction = new Vector2(); 
direction.set((newX - xPos), (newY - yPos)); 


b2Body.applyForceToCenter(direction, true); 

沒有這個if語句:

if (newX <= xPos){ 
    direction.set((xPos - newX), (yPos - newY)); 
} 

在box2d這個方向可能有小的值,你必須通過一些像100這樣的值(mayby更多)