【发布时间】:2015-05-17 12:43:39
【问题描述】:
我尝试使用带有 LibGDX 的 Java 纹理绘制 2 个圆圈。 我的类非常简单,GameObject 有一个圆(用于逻辑)和一个绘制方法。
这是我的绘制方法:
@Override
public void draw(Batch batch, float alpha){
batch.draw(sprite, circle.x-circle.radius, circle.y-circle.radius, circle.x+circle.radius, circle.y+circle.radius);
}
这是我执行的代码:
GameObject go = new GameObjectBuilder().createNew()
.withPosition(32, 32)
.withRadius(32)
.withTexture(new Texture(Gdx.files.internal("ball.png")))
.withId(0)
.build();
GameObject go2 = new GameObjectBuilder().createNew()
.withPosition(64, 64)
.withRadius(32)
.withTexture(new Texture(Gdx.files.internal("ball.png")))
.withId(1)
.build();
stage.addActor(go);
stage.addActor(go2);
结果如下:
以某种方式使用相同大小的圆圈,当远离原点放置时会缩放它们。目前我的主类扩展了 ApplicationAdapter 就是这样。
这是我在构建器中进行的调用堆栈。
circle.setPosition(x, y); // LibGDX.Circle class call
circle.setRadius(radius); // LibGDX.Circle class call
sprite = new Sprite(texture);
使用 ShapeRenderer,调用相同的对象并绘制一个实心圆会产生以下结果:
shapeRenderer.setColor(Color.BLACK);
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
for(GameObject goo : objects.values()) {
shapeRenderer.circle(goo.getX(), goo.getY(), goo.getRadius());
}
shapeRenderer.end();
最终编辑:
batch.draw(sprite, circle.x-circle.radius, circle.y-circle.radius, circle.radius*2, circle.radius*2);
成功了!
【问题讨论】:
-
您是否尝试将宽度和高度的值硬编码到您的
batch.draw()调用中?这是否给出了预期的行为? -
我应该补充一点,迈克尔霍布斯的回答应该可以解决问题,这就是您的问题所在
标签: java libgdx image-scaling