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