C# 获取一个对象的位置,单位为小数点后3位
我通过鼠标点击实例化一个对象。我需要得到变换位置x和y的小数点后3位。这是我的密码C# 获取一个对象的位置,单位为小数点后3位,c#,unity3d,C#,Unity3d,我通过鼠标点击实例化一个对象。我需要得到变换位置x和y的小数点后3位。这是我的密码 void OnMouseDown() { ray=Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray,out hit)) { if(Input.GetKey(KeyCode.Mouse0)) {
void OnMouseDown()
{
ray=Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray,out hit))
{
if(Input.GetKey(KeyCode.Mouse0))
{
GameObject obj=Instantiate(prefab,new Vector3(hit.point.x,hit.point.y,hit.point.z), Quaternion.identity) as GameObject;
OrbsList.Add(new Vector3(obj.transform.position.x,obj.transform.position.y,0));
}
}
}
现在,如果在位置(4.53325,3.03369,0)实例化obj,它将保存为(4.5,3.0,0)。我想把它的位置保存为(4.53325,3.03369,0)。请帮助,谢谢。对于记录,
Debug.Log
只打印了一位小数,这让人恼火
这样做
Vector3 pos = obj.transform.position;
Debug.Log("pos x is now " + pos.x.ToString("f3"));
Debug.Log("pos y is now " + pos.y.ToString("f3"));
Debug.Log("pos z is now " + pos.z.ToString("f3"));
但是注意强>
有个好消息:Unity明智地在Vector3中添加了“ToString”。所以,你可以这样做:
Vector3 pos = obj.transform.position;
Debug.Log("pos is now " + pos.ToString("f3"));
幸运的是这很容易
对于任何一位新程序员来说,这是学习扩展的绝佳机会 所以现在你可以这样做了
obj.Say();
…项目中的任何位置。它保存在您希望的位置,只是简化了显示。@Everts哦,您是对的。我刚刚把x和y转换成字符串,它们显示的是精确的位置,而不是四舍五入。谢谢,我现在觉得很愚蠢小心,浮点的精度有限,这里使用的值足够精确,一旦在计算中使用它们,就不会显示所需的结果。
obj.Say();