我正在创建一个简单的例程,当GameObject低于精灵的底部时执行一个动作。我已经弄清楚如何使用边界来获取精灵的尺寸,但是当我计算精灵底部的位置时,它返回的数字比我预期的要少。
我的方法如下(精灵的位置,减去边界的大小(宽度的一半),应该给我精灵的底部?):
public class FooBehaviour : MonoBehaviour
{
public SpriteRenderer ChildSprite;
void Start()
{
float bottomEdgeInLocalSpace =
ChildSprite.gameObject.transform.localPosition.y - ChildSprite.bounds.extents.y;
}
}
答案 0 :(得分:1)
事实证明Renderer.bounds在世界空间,我在当地空间工作,所以直接将它应用到本地位置给了我荒谬的结果。
通过使用InverseTransformPoint将bounds.min
转换为本地空间,我可以使用以下内容获得精灵的预期底部:
float position = transform.InverseTransformPoint(symbol.bounds.min).y;