用鼠标移动图片偏离中心

时间:2014-08-19 19:45:40

标签: android eclipse libgdx

我有一张图片显示但是当我尝试用鼠标移动它时,我的鼠标偏离图像居中。基本上,当我的鼠标位于应用程序屏幕的中心时,图像位于屏幕的右上角。解释它的另一种方法是,当我移动它时,鼠标不会直接在图像上方,而是将鼠标移到侧面。

以下是它的主要代码。

public class SlingshotSteve implements ApplicationListener{

private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;


@Override
public void create() { 
camera = new OrthographicCamera(1280, 720);     

batch = new SpriteBatch();


texture = new Texture(Gdx.files.internal("image.png"));
sprite = new Sprite(texture);

sprite = new Sprite(texture);
sprite.setOrigin(0,0);
sprite.setPosition(-sprite.getWidth()/2,-sprite.getHeight()/2);


}

@Override
public void dispose() {
batch.dispose();
texture.dispose();
}

@Override
public void render() {  
// Make the background color Black
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

// Mouse imput        
if(Gdx.input.isButtonPressed(Input.Buttons.LEFT)){
    sprite.setPosition(Gdx.input.getX() - sprite.getWidth()/2,
            Gdx.graphics.getHeight() - Gdx.input.getY() - sprite.getHeight()/2);
}
if(Gdx.input.isButtonPressed(Input.Buttons.RIGHT)){
    sprite.setPosition(Gdx.graphics.getWidth()/2 -sprite.getWidth()/2, 
            Gdx.graphics.getHeight()/2 - sprite.getHeight()/2);
}

batch.setProjectionMatrix(camera.combined);
batch.begin();
sprite.draw(batch);
batch.end();
}

我认为这是正相机的一个问题,但我不确定,即使我知道我也不知道如何解决它。

1 个答案:

答案 0 :(得分:1)

因为你可能忘了取消你的坐标。

Vector3 tmp=new Vector3(Gdx.input.getX(),Gdx.input.getY(),0);
camera.unproject(tmp);
float x=tmp.x,y=tmp.y;

现在可以根据需要使用x和y

if(Gdx.input.isButtonPressed(Input.Buttons.LEFT)){
sprite.setPosition(x - sprite.getWidth()/2,
       y - sprite.getHeight()/2);

}

并删除sprite.setOrigin(0,0);你不需要它。