我最近一直在使用导入的obj文件。
导入编辑器时,所有对象看起来都在正确的位置,但位置为(0,0,0)。
每当我遍历对象并将transform.position
写入文件时,每个对象都被设置为(0,0,0)。
只是为了检查我使用了返回相同结果的父对象transformPosition。
任何想法都会受到赞赏。
感谢。
编辑:刚被问到。问题在于他们不应该为所有事情返回0,他们遍布全世界。
rangeObjs = GameObject.Find("firing_range").GetComponentsInChildren<MeshFilter>();
for(int i = 0; i < rangeObjs.Length; i++){
Debug.Log(rangeObjs[i].transform.position.ToString());
}
答案 0 :(得分:1)
好的,似乎您的模型枢轴转换为根变换的中心。
这是你的模型有错误的枢轴或这是团结中的错误,将每个枢轴转换为根(0,0,0)
请在blender等其他3d建模软件中打开你的obj,看看枢轴是否处于零位。
请在3D建模软件中修复枢轴。
如果没有,那么您可以尝试将其导出为不同的格式,例如FBX(推荐)并尝试将其导回到统一。
但是,如果你想要这个棘手的方式。 您可以使MeshFilter GameObject成为具有正确枢轴位置的某个父级的子级,您可以使空GameObject为此创建新的轴。
修改强>
同时检查统一编辑器,选择包含MeshFilter的子对象,并在检查器中查看对象的位置。
不同的绑定位置并不意味着枢轴在那里,网格可能在其他地方,但它不能保证枢轴位于网格的相同位置
答案 1 :(得分:0)
您是否尝试过检查对象的 localPosition ? (与对象的位置相对)?
即。而不是;
foreach(Transform t in group){
print(t.position)
}
使用;
foreach(Transform t in group){
print(t.localPosition)
}