C# 合并精灵边界

C# 合并精灵边界,c#,unity3d,sprite,bounding-box,C#,Unity3d,Sprite,Bounding Box,我正在尝试制作一个与精灵边界框大小的碰撞器 我拥有的是一个有三个精灵的游戏对象。我只想使用一个碰撞器来覆盖整个游戏对象,所以我尝试使用中间精灵的边界,并使用中的封装方法来增加边界的大小,然后将该大小提供给碰撞器 如果我只通过精灵2的边界,碰撞器的大小是合适的。但是如果我封装了第一个和第三个精灵,对撞机的大小就会变得奇怪 代码: 你能定义一下当你说“大小变奇数”时会发生什么吗?@微病毒取决于精灵的大小和形状,它会变大或变小。你有没有用调试器检查过相关代码,看看边界框的值是多少?在什么情况下它不能按

我正在尝试制作一个与精灵边界框大小的碰撞器

我拥有的是一个有三个精灵的游戏对象。我只想使用一个碰撞器来覆盖整个游戏对象,所以我尝试使用中间精灵的边界,并使用中的封装方法来增加边界的大小,然后将该大小提供给碰撞器

如果我只通过精灵2的边界,碰撞器的大小是合适的。但是如果我封装了第一个和第三个精灵,对撞机的大小就会变得奇怪

代码:


你能定义一下当你说“大小变奇数”时会发生什么吗?@微病毒取决于精灵的大小和形状,它会变大或变小。你有没有用调试器检查过相关代码,看看边界框的值是多少?在什么情况下它不能按预期工作?如果使用封装,则成员的大小应始终增大;你观察到这种行为了吗?除了这些泛型指针之外,我在这里要做一个大胆的猜测:您是否在某处修改了一个Bounds变量,而没有将它重新分配给它所来自的成员,因为我认为Bounds是一个结构,所以该变量保存的是一个副本而不是原始的。
Bounds spriteTwoBounds = parentGO.GetBounds(spriteTwo);

foreach (Transform t in parentGO.GetComponentsInChildren<Transform>())
{
    if (t.HasSpriteRenderer())
    {
        spriteTwoBounds.Encapsulate(t.GetComponent<SpriteRenderer>().bounds);
    }
}
parentGO.GetComponent<BoxCollider2D>().size = spriteTwoBounds.size;