我目前正在爲我即將開發的項目製作我自己的關卡創建者(瓷磚地圖)。這一切都很順利,除了當我添加一個放大和縮小選項時遇到問題。我有一個正在處理所有輸入和渲染的類,就像我剛剛開始的那樣。Libgdx上的光標輸入「不正確」返回
LevelEditorController extends InputAdapter implements ApplicationListener
如您所見,該類擴展了InputAdapter並實現了ApplicationListener。
cameraHelper = new CameraHelper();
camera = new OrthographicCamera(Constants.VIEWPORT_WIDTH,
Constants.VIEWPORT_HEIGHT);
camera.position.set(0f, Constants.VIEWPORT_HEIGHT/2, 1f);
camera.update();
cameraHelper.setPosition(camera.position.x, camera.position.y,
camera.position.z);
相機是OrthographicCamera。 cameraHelper是我製作的幫手類。我在這裏設置相機的位置。 cameraHelper.setPosition(...)只是在我的CameraHelper類中設置一個Vertice3。
batch.setProjectionMatrix(camera.combined);
shapeRenderer.setProjectionMatrix(camera.combined);
上面,在重寫的render方法中,我設置了我的批處理和shapeRenderer的項目矩陣。
我相信這一切都是有效的,因爲一切正常顯示,只有光標位置關閉。
@Override
public boolean mouseMoved(int x, int y) {
for (int i = 0; i < boundingBoxes.size; i++) {
if (boundingBoxes.get(i).toRectangle()
.contains(x, Gdx.graphics.getHeight() - y)
&& !boundingBoxes.get(i).isActive()) {
boundingBoxes.get(i).setRenderFull(true);
} else {
boundingBoxes.get(i).setRenderFull(false);
}
}
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.setColor(0.53f, 0.62f, 0.32f, 1f);
shapeRenderer.circle(x, Gdx.graphics.getHeight() - y, 20);
shapeRenderer.end();
return false;
}
這是我的問題所在。在上面的方法中,我只需檢查光標位置是否與其中一個網格正方形相交。如果是這樣,我使網格正方形爲「renderFull」,呈現完整(填充)不同顏色的矩形。同樣在這個方法中,我在當前光標指針所在的地方繪製一個圓圈。這就是我的問題所在。當我運行我的程序時,圓圈不在我的光標所在的位置。我花了大約一個小時的時間進行調試,並試圖根據縮放比例提出一些算法來正確對齊,但無濟於事。有沒有辦法讓我的光標的正確位置,無論我的縮放嗎?此外,這可能是我遇到的問題,我的「世界」大小(網格)大約爲10000像素長。光標位置是否也隨之移動,還是會保持在實際程序的/ Jframe的大小範圍內?如果是這樣的話,我可以通過任何方式解決這個問題(我想這應該和將相機的位置添加到光標位置一樣簡單,但只是爲了防止出現這種情況):D) 這裏有一些圖片,以便您可以更好地瞭解問題是什麼。
任何幫助表示讚賞。謝謝! :)
['CabPanel'](http://stackoverflow.com/a/14887457/230513)可能會提供一些見解。 – trashgod