AtlasSpriteなどを切り取る方法
AtlasSpriteなどの画像を表現するクラスは、setScaleやsetSizeといった、大きさを調整するメソッドではうまく調整できませんでした。
というのもsetScaleで大きさは調整可能ですが、もちろん画像比率も変更されてしまいます。
画像比率をキープしたまま大きさを小さくリサイズしたい場合などどうすればいいでしょうか。
scaleはそのままに、画像をうまく切りたい場合、どうするか。
方法
drawメソッドをオーバーライドします。
コード
大体、イメージ的にはこんな感じでやるとうまくいきます。drawメソッド内で毎フレーム描画領域を絞る感じです。
AssetManager manager = new AssetManager();
TextureAtlas atlas = manager.get("hoge",TextureAtlas.class);
TextureAtlas.AtlasSprite sprite = new TextureAtlas.AtlasSprite(atlas.findRegion("hoge")){
@Override
public void draw(Batch batch) {
batch.draw(this, this.getX(), this.getY(), this.getOriginX(), this.getOriginY(),
this.getWidth() /2f, this.getHeight()/2f, // 縦横を半分にする
this.getScaleX(), this.getScaleY(), this.getRotation());
}
};