我有一张图片显示但是当我尝试用鼠标移动它时,我的鼠标偏离图像居中。基本上,当我的鼠标位于应用程序屏幕的中心时,图像位于屏幕的右上角。解释它的另一种方法是,当我移动它时,鼠标不会直接在图像上方,而是将鼠标移到侧面。
以下是它的主要代码。
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();
}
我认为这是正相机的一个问题,但我不确定,即使我知道我也不知道如何解决它。
答案 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);你不需要它。