libgdx获取屏幕上精灵的大小(以像素为单位)

libgdx获取屏幕上精灵的大小(以像素为单位),libgdx,perspectivecamera,decal,Libgdx,Perspectivecamera,Decal,我在做Libgdx项目。它基本上是2.5D aproach,所以我使用贴花,贴花批次。 还有透视照相机,我可以操作(放大/缩小),而且贴花是静态的 我很难找出屏幕上贴花投影的实际大小,例如,当相机放大时,它会变大,当相机缩小时,贴花在屏幕上会变小 我需要那个尺寸 我尝试过camera.project和camera.unprojects,但它返回的值都相同,并且只适用于贴花的位置,而且我不确定Libgdx中贴花使用的坐标系 有什么建议可以解决这个问题吗? 我能做什么?Camera.project是

我在做Libgdx项目。它基本上是2.5D aproach,所以我使用贴花,贴花批次。 还有透视照相机,我可以操作(放大/缩小),而且贴花是静态的

我很难找出屏幕上贴花投影的实际大小,例如,当相机放大时,它会变大,当相机缩小时,贴花在屏幕上会变小

我需要那个尺寸

我尝试过camera.project和camera.unprojects,但它返回的值都相同,并且只适用于贴花的位置,而且我不确定Libgdx中贴花使用的坐标系

有什么建议可以解决这个问题吗?
我能做什么?

Camera.project
是一条路要走。它正是你想要的。。。“了解屏幕上贴花投影的实际大小”

我不确定Libgdx中的贴花使用什么坐标系

标准(右手)三维坐标系。通过创建贴花时,可以提供贴花的大小。这是
X
Y
轴上的大小

您需要执行以下操作:

通过使用贴花的位置、尺寸、旋转和比例,计算贴花的三维顶点,即四边形的“角点”。有一个
deal.getVertices()
可能已经为您返回了这些值,但它是一个
float[]
,并且没有记录这些值的解释方式

一旦有了这4个顶点,就可以使用
Camera.project(…)
在屏幕上获取该点的位置。如果您的贴花不总是直接面向相机,那么这些坐标不一定会定义一个矩形,但这取决于您的用例以及您实际希望通过这些信息实现的目标

如果要检测这些贴花上的输入事件(如单击),可能应该为贴花创建一个
边界框
(可以使用已计算的顶点),并使用
相机
和输入坐标创建一个
光线
。然后使用检查您的单击是否击中此贴花

编辑:可以获得如下顶点:

float[] vertices = decal.getVertices();
Vector3 topLeft = new Vector3(vertices[Decal.X1], vertices[Decal.Y1], vertices[Decal.Z1]);
Vector3 topRight = new Vector3(vertices[Decal.X2], vertices[Decal.Y2], vertices[Decal.Z3]);
Vector3 bottomLeft = new Vector3(vertices[Decal.X3], vertices[Decal.Y3], vertices[Decal.Z3]);
Vector3 bottomRight = new Vector3(vertices[Decal.X4], vertices[Decal.Y4], vertices[Decal.Z4]);

Tnx,快速回答。你能再详细一点吗。getVertices检索由24个元素组成的数组,这有点让人困惑,应该使用哪些元素为camera.project方法创建Vector3?我在源代码中发现该数组中有3(x,y,z)对3(x,y,z)+1(颜色)+2(u,v)为什么是3?不是4号吗?几天前我在这一部分也失败了。我不知道如何使用这些值。我想也应该是4。但是,您也可以自己计算这些顶点。或者检查将渲染它们的贴花批的源代码,并检查顶点是如何计算的。好的,我现在也检查了代码。检查我的编辑。编辑:我只是绊倒了,一切都很完美:)又是Tnx!