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分量或类似的东西