0
我試圖在點擊時將精靈移動到鼠標位置。使用鼠標座標進行雪碧定位
然而,座標我從Gdx.input.getX()
和Gdx.input.getY()
得到的是相對左上角,和Sprite
的setPosition()
方法是相對於左下角。
爲什麼會這樣,以及如何將鼠標定位在點擊鼠標的位置?
我試圖在點擊時將精靈移動到鼠標位置。使用鼠標座標進行雪碧定位
然而,座標我從Gdx.input.getX()
和Gdx.input.getY()
得到的是相對左上角,和Sprite
的setPosition()
方法是相對於左下角。
爲什麼會這樣,以及如何將鼠標定位在點擊鼠標的位置?
屏幕座標來自Android並使用Y向下參照系。默認情況下,相機在libgdx中使用Y-up引用框架(因爲常規OpenGL也使用Y-up框架引用)。
如果您更喜歡Y向下參照系,則可以使用camera.setToOrtho(true);
方法將其顛倒。如果來自Flash背景,您可能更喜歡這個。
但一般來說,將屏幕座標從觸摸轉換爲相機座標系的安全方法是執行以下操作。無論您使用何種平臺以及您爲相機選擇何種座標系,這都可以工作。例如,對於某些類型的遊戲,您甚至不會使用與屏幕分辨率相匹配的相機,但您仍然希望將屏幕座標轉換爲相機座標。此外,如果您有一臺在世界各地移動的相機,則會自動將觸點更改爲世界座標。
tempVector3.set(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(tempVector3);
//now tempVector3 contains the touch point in camera coordinates.
它使用Vector3,因爲這也適用於3D相機。