0

特定のオブジェクトをスケーリングしようとしたときに、ゲームのレンダリング システムにわずかな問題が発生しました。論理座標を持つオブジェクトを画面上のグラフィカル座標にマッピングする方法に違いないと思います。

レンダリング可能

/**
 * Retrieve the image representing the object that should be rendered.
 * @return The image sprite representing the object.
 */
public Texture getSprite();

/**
 * Retrieve the x-coordinate where the object should be rendered.
 * @return The x-coordinate of the object.
 */
public float getScreenX();

/**
 * Retrieve the y-coordinate where the object should be rendered.
 * @return The y-coordinate of the object.
 */
public float getScreenY();

テクスチャ

......
......

/**
 * Retrieve the width of the texture.
 * @return The width of the texture.
 */
public int getWidth();

/**
 * Retrieve the height of the texture.
 * @return The height of the texture.
 */
public int getHeight();

......
......

このシステムは、ゲームの世界で論理座標を持たないインターフェースなどを描くときに完璧に機能します。

論理座標を持つオブジェクトを見て、座標をグラフィカル座標にマップする方法を見てみましょう。これにより、描画時にテクスチャをスケーリングすると問題が発生します。

タイル

@Override
public float getScreenX() {
    return x * width;
}

@Override
public float getScreenY() {
    return y * height;
}

任意のタイルのテクスチャのサイズが 16*16 であるとしますが、何らかの理由で 32*32 で描画したいとします。これは、タイルのグラフィカルな x 座標と y 座標が台無しになるため、問題を引き起こします。

注:イメージをシステムにロードするときにユーザーが縮尺を設定できるようにすることでこれを修正できることはわかっていますが、より柔軟にしたいと考えています。

TL;DR:必要に応じてスケーリングしながら、ゲーム世界の論理座標からグラフィカル座標へのマッピングを改善するにはどうすればよいですか? 論理オブジェクトがグラフィカル座標を担当するのではなく、より良いマッピング方法があるはずです。

4

0 に答える 0