worldToScreen()-如何运作?

赤色亡灵

我正在阅读一个用于游戏开发的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. 为什么要减去顶部/左侧并添加底部/右侧?

彻底的解释将不胜感激。

马亚尔

回答问题1

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

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

问题2的答案

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

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

right相同,您必须将x坐标添加leftwidth矩形的。

希望我的Paint技能会有所帮助,我制作了一张图,可能会帮助您理解:在此处输入图片说明

为了使图纸和我的答案更加清楚:

顶部+高度=底部

左+宽度=右

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章