我正在尝试在X轴上缩放一个矩形并使其位置保持原样。通常,当您在Unity3D中缩放精灵或对象时,它从中心开始并在给定轴的两侧展开。我尝试的是:
当我执行这两个步骤时,不知何故,我接近所需的结果,但对象仍然在另一侧以非常小的量扩展。
private float m_scaleSize = 1.1600f;
private void Update()
{
transform.localPosition -= new Vector3(0, m_scaleSize / 2, 0) * Time.deltaTime;
transform.localScale += new Vector3(0, m_scaleSize, 0) * Time.deltaTime;
}
为什么我得到几乎正确的结果?这是一些浮点不精确还是我的数学完全错了?我还想指出,我正在寻找数学解决方案并实现这一目标,而不是为了获得这种效果而将其与其他对象联系起来。
答案 0 :(得分:1)
此问题的常见解决方案是创建一个空的GameObject并将其放置在您想要缩放的点上,然后使您的矩形成为它的子项。当你缩放空的GameObject时,孩子将从它的中心调整大小,而不是它自己的中心。
答案 1 :(得分:0)
找出问题隐藏的地方。实际上数学是正确的,但是当使用精灵时,实际精灵中的像素将转换为Unity单位。所以在我的情况下,精灵矩形是128x128,但它的导入设置“每单位像素数:”设置为100,这给定位和缩放带来了错误的结果。所以基本上我只是将矩形制成一个100x100像素的盒子,所有这些都是正确的。