Unity3d 如何重新缩放游戏对象以与原始游戏对象匹配?

Unity3d 如何重新缩放游戏对象以与原始游戏对象匹配?,unity3d,math,scale,Unity3d,Math,Scale,我有一个游戏对象的网格,我可以在其中更改网格内游戏对象的数量。网格是游戏对象的子对象。我希望以编程方式重新缩放所有其他网格,以匹配我的4X4网格大小 所需尺寸 要重新缩放的网格 每个游戏对象为1个单位,父变换比例为(1,1,1)。我知道如果我的网格是8X8,我可能需要重新缩放到0.5。我只是在尝试计算重缩放数字时遇到了一个问题。同样,正如前面所说,这是一个非常简单的数学问题 如果有边长为5的网格,则需要4 所以你可以通过 currentSize / 5.0f * 4.0f 这将是0.8f的

我有一个游戏对象的网格,我可以在其中更改网格内游戏对象的数量。网格是游戏对象的子对象。我希望以编程方式重新缩放所有其他网格,以匹配我的4X4网格大小

所需尺寸

要重新缩放的网格


每个游戏对象为1个单位,父变换比例为(1,1,1)。我知道如果我的网格是8X8,我可能需要重新缩放到0.5。我只是在尝试计算重缩放数字时遇到了一个问题。

同样,正如前面所说,这是一个非常简单的数学问题

如果有边长为5的网格,则需要4

所以你可以通过

currentSize / 5.0f * 4.0f
这将是
0.8f
的一个系数

由于您需要将其应用于网格的每一侧,因此它必须是
0.8f*0.8f
,这是
0.16f
的一个因子


或者,如果你说它是8x8,那么同样的计算

currentSize / 8f * 4f

因此,系数
0.5
。然后平方,因此
0.25f

@derHugo回答是好的。对我来说,我的回答是:

    gridScaleratio = 1.0f / ((gridSize * gridSize) / (gridSize * 4.0f));
...
    playerGrid.transform.localScale = new Vector3(gridScaleratio, gridScaleratio, gridScaleratio);

您的网格似乎是5x5,您的目标是4x4,例如
currentSize/5*4
。。或者,如果是8x8,则
currentScale/8*4
,这将是
0.5f
@derHugo的一个系数。您对我的项目帮助很大。实际上,我是以(5*5)/(4*4)的形式进行计算的。“啊,是的,很明显,每边都有一个元素,所以是的,你必须使用平方,即当前的大小,刻度?