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

时间:2016-03-20 20:12:55

标签: c# unity3d sprite

我正在创建一个简单的例程,当GameObject低于精灵的底部时执行一个动作。我已经弄清楚如何使用边界来获取精灵的尺寸,但是当我计算精灵底部的位置时,它返回的数字比我预期的要少。

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

public class FooBehaviour : MonoBehaviour
{
    public SpriteRenderer ChildSprite;

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

1 个答案:

答案 0 :(得分:1)

事实证明Renderer.bounds在世界空间,我在当地空间工作,所以直接将它应用到本地位置给了我荒谬的结果。

通过使用InverseTransformPointbounds.min转换为本地空间,我可以使用以下内容获得精灵的预期底部:

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