@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轴,我的形状像镜子一样运动。如果我触摸顶部,我的形状将移至底部。如果我触摸底部,则形状将移至顶部。如何解决?
答案 0 :(得分:0)
用于渲染的LibGDX(默认情况下)使用坐标系,其中0位于屏幕底部,并且越向上,Y坐标就越大。
此外,当您读取输入坐标(触摸,移动...)时,您将获得屏幕坐标,但是在渲染图形时,您将使用“世界”坐标。它们处于2个不同的坐标系中,因此要从屏幕转换为世界,您必须使用camera.unproject()调用。应该是这样的:
Vector3 touchPos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(touchPos);
,然后使用touchPos.x
和touchPos.y
。
这里会问类似的问题,以便您可以在此处找到更多答案: