Java worldToScreen()-它是如何工作的?

Java worldToScreen()-它是如何工作的?,java,android,game-engine,Java,Android,Game Engine,我正在阅读android游戏开发教程,其中解释了如何将游戏中的坐标转换为实际像素。很简单。这是通过函数worldToScreen()完成的,如下所示: public Rect worldToScreen(float objectX, float objectY, float objectWidth, float objectHeight){ int left = (int) (screenCentreX - ((currentViewportWorldCentre.x - ob

我正在阅读android游戏开发教程,其中解释了如何将游戏中的坐标转换为实际像素。很简单。这是通过函数
worldToScreen()
完成的,如下所示:

public Rect worldToScreen(float objectX, float objectY, float objectWidth, float objectHeight){

        int left = (int) (screenCentreX - ((currentViewportWorldCentre.x - objectX) * pixelsPerMetreX));
        int top = (int) (screenCentreY - ((currentViewportWorldCentre.y - objectY) * pixelsPerMetreY));
        int right = (int) (left + (objectWidth * pixelsPerMetreX));
        int bottom = (int) (top + (objectHeight * pixelsPerMetreY));

        convertedRect.set(left, top, right, bottom);

        return convertedRect;
    }
它似乎返回一个矩形对象,其中包含正方形对象将占据的四个点

  • 它为什么用正方形
  • 为什么要减去顶部/左侧,然后添加底部/右侧

  • 请详细解释。

    回答问题1

    他使用矩形可能是因为它是一个简单的几何体对象,已经在
    Java
    和大多数游戏库中实现了,就像你正在使用的那个(我可以看到他使用的是
    Rect
    类)

    例如,当您想要实现简单的碰撞检测时,矩形也是2D游戏中常见的解决方案


    对问题2的回答

    你问他为什么要添加
    底部
    右侧
    。。。但我只能看到他在添加
    顶部
    左侧
    。 他这样做是因为
    y
    轴从上到下,而
    x
    轴从左到右

    因此,要获得
    底部
    点,必须将顶部点的
    y
    坐标添加到矩形的
    高度

    对于
    右侧
    点也是一样,您必须将
    左侧
    点的
    x
    坐标添加到矩形的
    宽度

    为了让我的
    绘画技能发挥作用,我画了一幅可能有助于你理解的图:
    

    为了让这幅画和我的答案更加清晰:

    顶部+高度=底部

    左+宽=右


    PS:“他”就是你正在学习的教程的作者。

    回答得很好,我的朋友。这幅画是我理解的锦上添花。非常感谢!