私が取り組んでいるゲーム用の 1 行のスプライト シートがあります。私はそれらをdrawable-xhdpi
フォルダーでのみ提供し、他の密度では OS にサイズ変更を任せています。
このアプローチでは、次の問題が発生します。
状態を含む1750
幅のスプライト シート (xhdpi
幅) があり5
ます。したがって、個々のスプライトには width があり1750 / 5 = 350
ます。では、これhdpi
は にサイズ変更される1313
ため、個々のスプライトの幅は になり1313 / 5 = 262.6
ます。ただし、これは実際262
にRect
は.source
drawBitmap
これに関する問題は、個々のスプライトを適切に抽出できないことです。それらを描画すると、連続する各スプライトが少し右にずれますが、これは望ましくありません。これを修正する方法はありますか?私は試してみましたが、手動でサイズを変更して1315
、このサイズ変更されたバージョンをdrawable-hdpi
.
注 1:個々のスプライトは、両側で多くの透明度に囲まれています (両側で同じ量)。この透明度の 1 ピクセルまたは 2 ピクセルを失う余裕はありますが、中間の透明でない部分をシフトすることはできません。
注 2:これは の間だけで発生するわけではありませんxhdpi -> hdpi
。他の密度クラスにサイズ変更する場合も、同じ問題が残ります。解決策は一般的である必要があります。サイズ変更係数(または少なくとも6/8
、4/8
および3/8
)、幅、個々のスプライトの量に関係なく。
問題をよりよく理解するために、これが (自動的にサイズ変更されるスプライト) を描画する必要があるスペースであると想像してください。
| _ _ _ _ _ _ _ _ _ _ |
これは、最初のフレームがどのように描画されるかです (0 * 262 to 0 + 262
スプライト シートから取得した、*
私が気にかけている非透明部分を表します):
| _ _ _ _ * * _ _ _ _ |
これは、2 番目のフレームの描画方法です (1 * 262 to 262 + 262
スプライト シートから取得)。
| _ _ _ _ _ & & _ _ _ |
それがいつあるべきか:
| _ _ _ _ & & _ _ _ _ |
連続する各フレームについても同様です(少なくとも、連続する各フレームについてはそう思います。実際のデバイスでは効果はそれほど目立ちませんが、そこにあります)。