Java 使用LibGDX SpriteBatches缩放图像
我有我的图像(为了解释,让我们称它为Java 使用LibGDX SpriteBatches缩放图像,java,android,image,libgdx,spritebatch,Java,Android,Image,Libgdx,Spritebatch,我有我的图像(为了解释,让我们称它为image.png),我正试图将其缩放到我绘制的身体中。身体和一切都与调试一起工作,但我不喜欢它。。我正在使用SpriteBatch将背景图像绘制到屏幕上(也可以缩放)。如何将Image.png缩放到与已渲染的动态实体相同的大小/位置 编辑: 在绘制图像时,我无法使它们与调试渲染体匹配 创建主体: BodyDef bodydef2 = new BodyDef(); bodydef2.type
image.png
),我正试图将其缩放到我绘制的身体中。身体和一切都与调试一起工作,但我不喜欢它。。我正在使用SpriteBatch
将背景图像绘制到屏幕上(也可以缩放)。如何将Image.png
缩放到与已渲染的动态实体相同的大小/位置
编辑:
在绘制图像时,我无法使它们与调试渲染体匹配
创建主体:
BodyDef bodydef2 = new BodyDef();
bodydef2.type = BodyType.DynamicBody;
bodydef2.position.set(camera.viewportWidth + 30.0f, (int)(Math.random()*camera.viewportHeight)%(LastPlatformY+5)+20);
//System.out.println(bodydef2.position.y + " " + LastPlatformY);
Body block = world.createBody(bodydef2);
PolygonShape Shape2 = new PolygonShape();
Shape2.setAsBox(750*WORLD_TO_BOX, 200*WORLD_TO_BOX);
FixtureDef fixtureDef2 = new FixtureDef();
fixtureDef2.shape = Shape2;
fixtureDef2.density = 1000.0f;
fixtureDef2.friction = 0.0f;
fixtureDef2.restitution = 0;
block.setLinearVelocity(new Vector2((float) (Platform_Velocity*-1), 0));
block.createFixture(fixtureDef2);
//Lock 'block' to X-Axis, Relative to floor.
PrismaticJointDef jointDef = new PrismaticJointDef();
jointDef.collideConnected = true;
jointDef.initialize(block, groundBody, block.getWorldCenter(), new Vector2(1, 0));
world.createJoint(jointDef);
Platforms.add(block);
Platforms_Created++;
LastPlatformY = (int)bodydef2.position.y;
绘图图像:
sp.draw(platforms, (float)(Platforms.get(i).getPosition().x), (float)(Platforms.get(i).getPosition().y), 75,20);
编辑#2:
事实证明,如果你的相机小于屏幕大小,你必须做一些补偿来解释位置的变化。。问题解决了,谢谢 创建身体时,只需将身体大小保存在两个变量中,然后调用draw方法。 要获取对象的位置,请调用body.getPosition() 比如说
Texture t = assetManager.get("your texture", Texture.class);
BodyDef bodyDef = new BodyDef();
body.type = BodyType.DynamicBody
float width = 64 * WORLD_TO_BOX;
float height = 64 * WORLD_TO_BOX;
Shape shape = new PolygonShape();
float[] points = new float[]{0,0,width,0,width,height,0, height};
shape.set(points);
FixtureDef def = new FixtureDef();
def.shape = shape;
...
body.createFixture(def);
shape.dispose();
等你想画画的时候
public void render(Spritebatch batch) {
batch.draw(t, body.getPosition().x * BOX_TO_WORLD, body.getPosition().y * BOX_TO_WORLD, width * BOX_TO_WORLD, height * BOX_TO_WORLD);
}
什么是“盒子”到“世界”?算出了盒子到“世界”,但数学是不正确的,因为图像与身体似乎是一致的