C# 本地框对撞机的长浮动大小和中心统一

C# 本地框对撞机的长浮动大小和中心统一,c#,unity3d,C#,Unity3d,我需要一个盒子对撞机的中心和大小。到目前为止,我得到了这个: public GameObject Model; BoxCollider m_Collider; Vector3 Center; Vector3 Size; void Start() { m_Collider = Model.GetComponent<BoxCollider>(); Center = transform.TransformPoint(m_Collider.center); Si

我需要一个盒子对撞机的中心和大小。到目前为止,我得到了这个:

public GameObject Model;

BoxCollider m_Collider;

Vector3 Center;
Vector3 Size;

void Start()
{
    m_Collider = Model.GetComponent<BoxCollider>();
    Center = transform.TransformPoint(m_Collider.center);
    Size = transform.TransformPoint(m_Collider.size);
    print(Center + "   " + Size);
} 
公共游戏对象模型;
BoxCollider m_对撞机;
矢量3中心;
矢量3大小;
void Start()
{
m_Collider=Model.GetComponent();
中心=transform.TransformPoint(m_Collider.Center);
大小=transform.TransformPoint(m_Collider.Size);
打印(中心+“”+大小);
} 
Unity打印出以下内容:

(0.0,1.0,4.4)(0.8,1.6,5.0)

不幸的是,这不够精确,因为我需要更多的小数。如何将其转换为更长的浮动

而不是

打印(中心+“”+大小);
使用以下命令:

Debug.Log(Center.ToString("F4") + "   " + Size.ToString("F4"));
您可以将
4
更改为另一个数字,它表示该方法将在控制台中打印的十进制值的数量

参考:

不幸的是,这不够精确,因为我需要更多的小数。怎么 我要把它变成更长的浮动吗

这是准确的。问题在于
打印(中心+“”+大小)
Debug.Log(中心+“”+大小)函数。它们都用于截断
矢量3

只需制作一个简单的包装器来显示向量中的所有值:

public class Logger
{
    public static void Log(object message)
    {
        if (message.GetType() == typeof(Vector3))
        {
            Vector3 vec = (Vector3)message;
            string res = String.Format("({0}, {1}, {2})", vec.x, vec.y, vec.z);
            Debug.Log(res);
        }
        else
        {
            Debug.Log(message);
        }
    }
}
以及使用:

Logger.Log(Center);
Logger.Log(Size);
注意


不要尝试将
Center+“”+Size
传递到打印功能,包括上面的自定义功能。这是因为将
Vector3
string
组合的重载也会截断它的值。像我上面所做的那样,将它们打印在不同的行上,您应该可以得到完整的值。

我也想到了这一点,但这不会改变变量本身的精度。另外,中心和大小是Vector3类型,所以我不确定它是否允许这种类型的转换。你只是想打印更多的小数吗?变量本身将保持浮点的精度。打印函数只是为了简单而循环。不,我不需要打印它们,只是想知道我是否正确地将局部坐标转换为世界坐标。谢谢你的帮助。不知道打印函数将变量舍入如果要验证,请将变量指定给变换的x分量或类似的东西