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

时间:2015-12-29 22:16:41

标签: java android game-engine

我正在阅读一个游戏开发的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. 为什么使用正方形?
  2. 为什么它在顶部/左侧减去并添加底部/右侧?
  3. 非常感谢您的详细解释。

1 个答案:

答案 0 :(得分:1)

回答问题1

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

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

回答问题2

你问他为什么要添加bottomright ...但我只能看到他正在添加topleft。 他这样做是因为y轴从上到下,x轴从左到右。

因此要获得bottom点,您必须将顶点的y坐标添加到矩形的height

right点相同,您必须将x点的left坐标添加到矩形的width

希望我的Paint技能有用,我制作的图纸可能会帮助您理解: enter image description here

使绘图和我的答案更加清晰:

top + height = bottom

左+宽=右

PS:“他”是制作您正在关注的教程的人。