为什么我在 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 工作,所以直接将它应用到本地位置给了我荒谬的结果.
通过使用 InverseTransformPoint 将 bounds.min
转换为本地 space,我能够使用以下方法获得精灵的预期底部:
float position = transform.InverseTransformPoint(symbol.bounds.min).y;
我正在创建一个简单的例程,当游戏对象低于精灵底部时执行一个动作。我已经想出如何使用边界获取精灵的尺寸,但是当我计算我认为精灵底部的位置时,它返回的数字比我预期的要小。
我的方法如下(精灵的位置,减去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 工作,所以直接将它应用到本地位置给了我荒谬的结果.
通过使用 InverseTransformPoint 将 bounds.min
转换为本地 space,我能够使用以下方法获得精灵的预期底部:
float position = transform.InverseTransformPoint(symbol.bounds.min).y;