y轴在屏幕中间

时间:2015-05-25 14:52:58

标签: android libgdx

您好我有一个简单的代码:

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture texture;
    BitmapFont font;
    GameObject gameObject1;
    GameObject gameObject2;


    @Override
    public void create () {


        texture= new Texture("badlogic.jpg");

        batch= new SpriteBatch();
        font = new BitmapFont();
        font.setColor(Color.GREEN);

        gameObject1= new GameObject(texture);
        gameObject2= new GameObject(texture);
        gameObject1.x=0;
        gameObject1.y=0;
        gameObject2.x=400;
        gameObject2.y=400;
        gameObject2.height=gameObject2.getTexture().getHeight();
        gameObject2.width=gameObject2.getTexture().getHeight();
        gameObject1.height=gameObject1.getTexture().getHeight();
        gameObject1.width=gameObject1.getTexture().getHeight();
    }

    @Override
    public void render () {
        update();
        Gdx.gl.glClearColor(0, 0, 0, 0);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();

        batch.draw(gameObject1.getTexture(),gameObject1.x, gameObject1.y);
        batch.draw(gameObject2.getTexture(),gameObject2.x, gameObject2.y);
        //batch.draw(texture, 0, 0);
        //font.draw(batch, "HELLO",400,400);
        batch.end();
    }
    private void update() {
        // TODO Auto-generated method stub
        if (Gdx.input.isTouched()){

            gameObject1.y=Gdx.input.getY();
            gameObject1.x=Gdx.input.getX();



        }
        if (gameObject1.overlaps(gameObject2)){
            Gdx.app.exit();
        }
    }

    @Override
    public void dispose(){
        System.out.println("dispose");
        batch.dispose();
        texture.dispose();
        font.dispose();
    }
}

它处理小问题: y轴位于中间屏幕。我正在移动手指,物体下降。 物体应该在我的手指下,就像镜子反射一样。 哪里有问题?

private void update() {
    // TODO Auto-generated method stub
    if (Gdx.input.isTouched()){

        gameObject1.y=Gdx.graphics.getHeight()-Gdx.input.getY();
        gameObject1.x=Gdx.input.getX();         

    }
    if (gameObject1.overlaps(gameObject2)){
        Gdx.app.exit();
    }
}

1 个答案:

答案 0 :(得分:0)

由于以下原因,他正像镜子一样移动:
gameObject1.y=Gdx.graphics.getHeight()-Gdx.input.getY();
你得到了图形的高度,从你减去手指y值的高度开始。
y轴在中间,所以如果你的手指在它上面,你将得到负y值。
newY = height-(-y) = height + y
结果是当oyu移动你的手指时,物体在y轴上向负方向移动。

要解决它,只需切换到: gameObject1.y=Gdx.graphics.getHeight()+Gdx.input.getY();
或者将y ais放在屏幕的顶部。

相关问题