为什么我在 Unity 中为精灵底部计算错误的局部位置?

Why am I calculating the wrong local position for the bottom of a sprite in Unity?

我正在创建一个简单的例程,当游戏对象低于精灵底部时执行一个动作。我已经想出如何使用边界获取精灵的尺寸,但是当我计算我认为精灵底部的位置时,它返回的数字比我预期的要小。

我的方法如下(精灵的位置,减去bounds的大小(宽度的一半),应该给我精灵的底部?):

public class FooBehaviour : MonoBehaviour
{
    public SpriteRenderer ChildSprite;

    void Start()
    {
        float bottomEdgeInLocalSpace =
            ChildSprite.gameObject.transform.localPosition.y - ChildSprite.bounds.extents.y;
    }
}

原来 Renderer.bounds 在世界 space 中,而我在本地 space 工作,所以直接将它应用到本地位置给了我荒谬的结果.

通过使用 InverseTransformPointbounds.min 转换为本地 space,我能够使用以下方法获得精灵的预期底部:

float position = transform.InverseTransformPoint(symbol.bounds.min).y;