2014-03-04 48 views
1

我的理解,libGDX座標系統默認設置,所以(0,0)位於左下角,像下面的圖片:LibGDX觸摸協調混亂

img http://gyazo.com/0e1cd9e1f7c4ee39ea38549ff754ac78.png

是它可能使它像JFrame一樣工作,默認位置在左上角?不管怎樣,回到我的實際問題,android(或至少我的手機)觸摸座標系是全屏工作(當手機躺在它的一側),所以默認(0,0)位置位於右上角,像下面的圖片:

img2 http://gyazo.com/733fb20b7ce8e842a03a57a7735161ed.png

我只是這樣做的時候會發生什麼:

@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    System.out.println("X: " + screenX + " Y: " + screenY); 
    this.instance.player.setLocation(screenX, screenY); 
    return false; 
} 

我只是得到了X,觸摸屏的Y(基於Android的全屏座標系),然後使用它libgdx座標系完全不同,所以如果我碰到右上角,我的藍色矩形將出現在左下角。

有沒有一種方法可以像在PC上一樣在左上角工作?

回答

4

您需要使用相機來完成此操作。如果您不使用相機,我強烈建議添加相機,因爲它使事情變得更容易。只需撥打camera.setToOrtho(true),即可將LibGDX的座標系切換到您想要的座標系(左上方的(0,0))。

要使用除Gdx.graphics.getWidth/Height()以外的特定視口寬度和高度完成此操作,可以撥打camera.setToOrtho(true, viewportWidth, viewportHeight)

+0

我已經在做這個,同樣的問題,爲什麼? – Artemkller545

+0

你是否在使用相機繪製所有東西?確保你將SpriteBatch的投影矩陣設置爲camera.combined。 – kabb

+0

謝謝!它的工作:) – Artemkller545

0

我不知道如何在左上角設置它,但有一點你可以將輸入座標轉換爲libgdx座標。 我希望能幫助你,或者幫助別人:

int Screen_height = Gdx.graphics.getHeight(); // Your screen height  

@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    System.out.println("X: " + screenX + " Y: " + (Screen_height - screenY)); 
    this.instance.player.setLocation(screenX, (Screen_height - screenY)); 
return false; 
} 
-1

您需要使用方法project(Vector3 worldCoords)com.badlogic.gdx.graphics.Camera類。

private Camera camera; 
............ 

@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button) { 

創建矢量的一個實例並使用輸入事件處理程序的座標初始化它。

Vector3 worldCoors = new Vector3(screenX, screenY, 0); 

項目世界空間中給出的世界座標以屏幕座標。

camera.project(worldCoors); 

使用投影座標。

world.hitPoint((int) worldCoors.x, (int) worldCoors.y); 

    OnTouch(); 

    return true; 
} 
+0

你需要提供一些信息,隨着代碼 – ravthiru

0

是的,這很容易。 你只需要從Y值中減去屏幕的高度。 所以: 手指位置Y =屏幕的高度 - 您找到的Y值。

0

有一個簡單的方法: 只是做減法波紋管

Gdx.graphics.getHeight()-screenY 

只有這行代碼是必要的,因爲你可以看到。

+0

對不起人,我寫了很多次相同的事情,因爲在Stackoverflow應用程序中沒有顯示我發佈的答案的錯誤。 ..對不起 – BeginnerDev

0

創建變量fingerY並使用減法:

fingerY= Gdx.graphics.getHeight()-screenY; 

所以,如果screenY等於10從左下角和屏幕的高度等於240個像素:

fingerY=240-10 

然後fingerY距離左下角= 230像素,距離左上角10像素。

+0

希望它可以幫助你 – BeginnerDev