在 Unity 中,获取网格,或以其他方式获取 Sprite 的局部边界?
In Unity, get the mesh, or otherwise get local bounds on a Sprite?
此问题仅与Unity游戏引擎有关。
这是一个 所谓的 Unity "sprite"(Unity Sprite class)的视觉示例,它是一个薄的 3D 对象。
显示 AABB(绿线)。在 Unity 中,gpu 的实时 AABB 是通过 .bounds
(doco). If new to CG, .
(注意,"local"在Unity中(doco, doco)表示:在父对象的四元数中;"world"表示在场景对象的四元数中。)
现在!对于任何 Unity 工程师阅读:
通常在Unity中,有一个可见的对象,当你想得到Unity Bounds,
如果你想要他们在世界 space,renderer.bounds
returns Unity Bounds 在世界 space.
如果你想在本地 space,mesh.bounds
returns Unity Bounds 在本地 space。
这是 Unity 的基础,您一直都在做。然而。据我所知,有了新的精灵,也就是说 SpriteRenderer
,无法真正访问网格。
(您实际上可以获得.triangles,但是从那里重建绕组和大小将是一件很麻烦的事情。)
那怎么才能得到雪碧的localUnity Bounds?
(请注意,sprite.bounds
本身就是相同的 renderer.bounds
,这无济于事。)
我想你正在寻找 SpriteRenderer.sprite.bounds
。
public class LogBounds : MonoBehaviour {
void OnGUI () {
var r = GetComponent<SpriteRenderer>();
GUILayout.Label("SpriteRenderer.bounds center " + r.bounds.center + " size " + r.bounds.size);
GUILayout.Label("SpriteRenderer.sprite.bounds center " + r.sprite.bounds.center + " size " + r.sprite.bounds.size);
}
}
请注意,SpriteRenderer.sprite.bounds 的值不会随着变换属性的更改而更改——这些值在本地坐标中。
此问题仅与Unity游戏引擎有关。
这是一个 所谓的 Unity "sprite"(Unity Sprite class)的视觉示例,它是一个薄的 3D 对象。
显示 AABB(绿线)。在 Unity 中,gpu 的实时 AABB 是通过 .bounds
(doco). If new to CG,
(注意,"local"在Unity中(doco, doco)表示:在父对象的四元数中;"world"表示在场景对象的四元数中。)
现在!对于任何 Unity 工程师阅读:
通常在Unity中,有一个可见的对象,当你想得到Unity Bounds,
如果你想要他们在世界 space,renderer.bounds
returns Unity Bounds 在世界 space.
如果你想在本地 space,mesh.bounds
returns Unity Bounds 在本地 space。
这是 Unity 的基础,您一直都在做。然而。据我所知,有了新的精灵,也就是说 SpriteRenderer
,无法真正访问网格。
(您实际上可以获得.triangles,但是从那里重建绕组和大小将是一件很麻烦的事情。)
那怎么才能得到雪碧的localUnity Bounds?
(请注意,sprite.bounds
本身就是相同的 renderer.bounds
,这无济于事。)
我想你正在寻找 SpriteRenderer.sprite.bounds
。
public class LogBounds : MonoBehaviour {
void OnGUI () {
var r = GetComponent<SpriteRenderer>();
GUILayout.Label("SpriteRenderer.bounds center " + r.bounds.center + " size " + r.bounds.size);
GUILayout.Label("SpriteRenderer.sprite.bounds center " + r.sprite.bounds.center + " size " + r.sprite.bounds.size);
}
}
请注意,SpriteRenderer.sprite.bounds 的值不会随着变换属性的更改而更改——这些值在本地坐标中。