0
現在我已經開始學習android和libgdx,並試圖弄清楚屏幕和觸摸輸入如何在android中工作,現在我通過觸摸繪製矩形來測試觸摸位置。LibGDX android touch輸入不準確?
該矩形將在觸摸的X來繪圖,Y.
但是,當我做到了,當我觸摸左,它將繪製一個矩形上的權利,同樣的,如果我做相反的,它將畫在左邊。
如果我觸摸中心,它會將它畫在中間,但與我手指的觸摸真的不一樣。
檢測位置的準確方法是什麼?
public class myApp implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private ShapeRenderer shapeRender;
private Player player;
private ArrayList<Player> players;
@Override
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera(w, h);
shapeRender = new ShapeRenderer();
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("data/libgdx.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275);
sprite = new Sprite(region);
sprite.setSize(0.9f, 0.9f * sprite.getHeight()/sprite.getWidth());
sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2);
sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2);
this.players = new ArrayList<Player>();
}
@Override
public void dispose() {
batch.dispose();
texture.dispose();
}
@Override
public void render() {
update(Gdx.graphics.getDeltaTime());
renderGame();
}
private void update(double delta) {
Input i = Gdx.input;
if (i.isTouched()) {
this.players.add(new Player(i.getX(), i.getY()));
}
}
private void renderGame() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
//shapeRender.setProjectionMatrix(camera.combined);
if (players.size() > 0) {
shapeRender.begin(ShapeType.Filled);
shapeRender.setColor(Color.RED);
for (Player p : this.players) {
shapeRender.rect(p.getX(), p.getY(), 100, 100);
}
shapeRender.end();
}
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
我想這是因爲手機的屏幕,它是,Y(0,0)點開始在右上角。 – Artemkller545