我目前正在尝试使用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()
然而它似乎只创造了一个新的形状,而不是移动我的旧形状。有没有办法用形状移动旧的,或者我应该使用另一个类?
答案 0 :(得分:3)
ShapeRenderer仅渲染点,线,"形状"你告诉它画画。它实际上并不存储/创建形状。你的代码每次渲染一个矩形,如果按下左键,只需在稍微不同的坐标上绘制第二个矩形。
如果您只想使用形状,请查看libGDX Rectangle类本身(还有Circle,Ellipse,Polygon类)。您可以创建一个矩形(指定x / y坐标,宽度/高度等),然后使用形状渲染器根据矩形的x / y坐标(或宽度/高度/等)绘制该矩形。
这是一个简单的解决方案,但可能只是你需要的
答案 1 :(得分:0)
您需要清除两个渲染调用之间的屏幕。这可以通过以下命令完成:
Gdx.gl.glClearColor( 1, 0, 0, 1 );
Gdx.gl.glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );
(来自libgdx wiki)。
在实际游戏中,通常在绘制任何内容之前在渲染方法中完成。
重要的是要注意'形状'您创建的内容根本无法修改,大多数程序会将对象(如Rectangle)形状化以跟踪属性,然后在render方法中使用此数据。我建议您通过一个简单的游戏“#39;关于libgdx wiki的教程,它展示了如何使用libGDX完成许多与游戏相关的常见任务。 Link to tutorial.