2016-08-02 82 views
0

我目前正在尝试使用箭头键在LibGDX中按下移动一个形状。这是我到目前为止:如何在LibGDX中移动形状?

shapeRenderer.setColor(Color.BLACK); 
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); 
    shapeRenderer.rect(250,250,20,20); 
    if(Gdx.input.isKeyPressed(Input.Keys.LEFT)) { 
     shapeRenderer.rect(200,250,20,20); 

    } 
    shapeRenderer.end() 

但它似乎只创建一个新的形状,而不是移动我的旧的。有没有办法用形状来移动旧的,还是应该使用另一个班级?

回答

2

ShapeRenderer仅渲染点,线,“形状”,你告诉它绘制。它本身并不实际存储/创建形状。你的代码每次渲染一个矩形,如果按下左键,只需要在略有不同的坐标上绘制第二个矩形。

如果您只是想使用形状,请看libGDX Rectangle类本身(也有Circle,Ellipse,Polygon类)。您可以创建一个矩形(分配x/y坐标,宽度/高度等),然后使用形状渲染器根据矩形的x/y坐标(或宽度/高度/等)绘制该矩形。

这是一个简单的解决方案,但可能是你需要的全部

0

您需要清除两个呈现调用之间的屏幕。这可以通过以下命令完成:

Gdx.gl.glClearColor(1, 0, 0, 1); 
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

(来自libgdx wiki)。

在实际的游戏中,这通常是在绘制任何东西之前在渲染方法中完成的。

需要注意的是,您所创建的“形状”根本无法修改,大多数程序会对形状对象(如矩形)进行形状跟踪,然后在渲染方法中使用这些数据。我建议你通过libgdx wiki上的'简单游戏'教程来工作,它显示了如何使用libGDX完成许多常见的游戏相关任务。 Link to tutorial.