【问题标题】:Move a shape to place where my finger is touched将形状移动到我的手指触摸的位置
【发布时间】:2019-10-13 04:07:49
【问题描述】:
@Override
public void create()
{

    batch = new SpriteBatch();

    shape = new ShapeRenderer();
    velocity = new Vector2(100, 0);
    position = new Rectangle(0, 5, 100, 100);

    font = new BitmapFont();
    font.setColor(Color.BLACK);
    font.getData().scale(3f);

    camera = new OrthographicCamera();
    confCamera();

}

@Override
public void render()
{        

       if(Gdx.input.isTouched())
        position.x = Gdx.input.getX() - position.width/2;
        position.y = (Gdx.input.getY()  - position.height/2);

    shape.begin(ShapeRenderer.ShapeType.Filled);

    shape.setColor(Color.BLACK);
    shape.rect(position.x, position.y, position.width, position.height);

    shape.end();
}

这是一个简单的代码,但我并没有理解 Y 轴,我的形状像镜子一样移动。如果我触摸顶部,我的形状就会下降。如果我触摸底部,我的形状就会向上。如何解决?

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    LibGDX(默认)用于渲染使用坐标系,其中 0 位于屏幕底部,越往上 Y 坐标越大。

    此外,当您读取输入坐标(触摸、移动...)时,您会获得屏幕坐标,但在渲染图形时,您使用的是“世界”坐标。它们位于 2 个不同的坐标系中,因此要从屏幕转换为世界,您必须使用 camera.unproject() 调用。应该是这样的:

    Vector3 touchPos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
    camera.unproject(touchPos);
    

    然后使用touchPos.xtouchPos.y

    此处提出了类似的问题,因此您可以在此处找到更多答案:

    Using unProject correctly in Java Libgdx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多