我正在阅读一个游戏开发的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;
}
它似乎返回一个矩形对象,其中包含方形对象占据的四个点。
非常感谢您的详细解释。
答案 0 :(得分:1)
回答问题1
他正在使用一个矩形可能是因为它是一个简单的几何对象,已经在Java
和大多数游戏库中实现,就像你正在使用的那个(我可以看到他正在使用Rect
类) 。
当您想要实现简单的碰撞检测时,矩形也是2D游戏中的常见解决方案。
回答问题2
你问他为什么要添加bottom
和right
...但我只能看到他正在添加top
和left
。
他这样做是因为y
轴从上到下,x
轴从左到右。
因此要获得bottom
点,您必须将顶点的y
坐标添加到矩形的height
。
right
点相同,您必须将x
点的left
坐标添加到矩形的width
。
使绘图和我的答案更加清晰:
top + height = bottom
左+宽=右
PS:“他”是制作您正在关注的教程的人。