我正在尝试缩放纹理以适合我的屏幕,但是我不确定该怎么做。
private AssetManager assets;
private TextureAtlas atlas;
private TextureRegion layer1,layer2,layer3;
assets = new AssetManager();
assets.load("pack.pack", TextureAtlas.class);
assets.finishLoading();
atlas = assets.get("pack.pack");
layer1=atlas.findRegion("floor");
有没有办法缩放纹理?
最佳答案
TextureRegion对象不包含任何有关绘制时大小的信息。为此,您可以创建自己的类,其中包含用于绘制数据的数据,例如宽度,高度和位置的变量。
或者,您可以使用内置的Sprite类,该类已经可以处理许多基本的定位和尺寸数据。从设计的角度来看,我认为应避免使用Sprite,因为Sprite从TextureRegion扩展而来,因此可以将游戏数据与资产组合在一起。最好有一个游戏对象类。一个例子:
public class GameObject {
float x, y, width, height, rotation;
TextureRegion region;
final Color color = new Color(1, 1, 1, 1);
public GameObject (TextureRegion region, float scale){
this.region = region;
width = region.getWidth() * scale;
height = region.getHeight() * scale;
}
public void setPosition (float x, float y){
this.x = x;
this.y = y;
}
public void setColor (float r, float g, float b, float a){
color.set(r, g, b, a);
}
//etc getters and setters
public void draw (SpriteBatch batch){
batch.setColor(color);
batch.draw(region, x, y, 0, 0, width, height, 1f, 1f, rotation);
}
public void update (float deltaTime) {
// for subclasses to perform behavior
}
}