缩放和重新定位精灵

时间:2014-12-27 12:47:03

标签: unity3d scale

Scale

我正在尝试在X轴上缩放一个矩形并使其位置保持原样。通常,当您在Unity3D中缩放精灵或对象时,它从中心开始并在给定轴的两侧展开。我尝试的是:

  1. 使用某个值在X轴上缩放对象。
  2. 重新定位给定缩放尺寸的一半。
  3. 当我执行这两个步骤时,不知何故,我接近所需的结果,但对象仍然在另一侧以非常小的量扩展。

    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;     
    }
    

    为什么我得到几乎正确的结果?这是一些浮点不精确还是我的数学完全错了?我还想指出,我正在寻找数学解决方案并实现这一目标,而不是为了获得这种效果而将其与其他对象联系起来。

2 个答案:

答案 0 :(得分:1)

此问题的常见解决方案是创建一个空的GameObject并将其放置在您想要缩放的点上,然后使您的矩形成为它的子项。当你缩放空的GameObject时,孩子将从它的中心调整大小,而不是它自己的中心。

答案 1 :(得分:0)

找出问题隐藏的地方。实际上数学是正确的,但是当使用精灵时,实际精灵中的像素将转换为Unity单位。所以在我的情况下,精灵矩形是128x128,但它的导入设置“每单位像素数:”设置为100,这给定位和缩放带来了错误的结果。所以基本上我只是将矩形制成一个100x100像素的盒子,所有这些都是正确的。