这让我非常沮丧!这是正在发生的事情,我只是不明白
在编辑器中,我的父对象的比例为100,100,100
预制件的变换如下:
Position: 0, -1.939, 0 Rotation: 0, 0, 0 Scale: 0.3946165, 0.3946165, 0.3946165
如果我将它拖到父母身上,它看起来很完美,完全符合我的要求。
我将预制件导出为AssetBundle并在运行时导入,如下所示:
currentPerson = Instantiate(bundle.mainAsset,new Vector3(0, -1.939f, 0), Quaternion.identity) as GameObject;
currentPerson.transform.localScale = new Vector3(300, 300, 300);
currentPerson.transform.parent = GameObject.Find("PeopleImageTarget").transform;
Debug.Log(currentPerson.transform.position.x + ", " + currentPerson.transform.position.y + ", " + currentPerson.transform.position.z);
Debug.Log(currentPerson.transform.rotation.x + ", " + currentPerson.transform.rotation.y + ", " + currentPerson.transform.rotation.z);
Debug.Log (currentPerson.transform.localScale.x + ", " + currentPerson.transform.localScale.y + ", " + currentPerson.transform.localScale.z);
现在出现了子对象,但它仍然很小,我将比例设置为300以尝试增加其大小,它在调试日志中报告3
这是作为导出到IOS应用程序运行可能使用来自Vuforia的增强现实工具,因此父级别为100
如果我将孩子包含在应用程序中并且只是设置活动开启或关闭,那么孩子看起来很完美,它只是在实例化时才会变色,这是我在运行时导入模型所需的功能....
答案 0 :(得分:1)
当你重新渲染一个物体时,它的世界尺度保持不变。这意味着其本地规模发生变化。因此,如果您知道在重新定位之后您希望其局部比例是什么,则应在重新定位后设置其局部比例。
答案 1 :(得分:0)
您应首先设置parrent,然后设置比例。
切换这一行:
currentPerson.transform.localScale = new Vector3(300, 300, 300);
currentPerson.transform.parent = GameObject.Find("PeopleImageTarget").transform;
尝试:
currentPerson.transform.parent = GameObject.Find("PeopleImageTarget").transform;
currentPerson.transform.localScale = new Vector3(300, 300, 300);
答案 2 :(得分:0)
要在更改父母时保留比例(或不保留),请使用Transform.SetParent并根据需要设置worldPositionStays
参数:
Transform targetTransform = GameObject.Find("PeopleImageTarget").transform;
currentPerson.transform.SetParent(targetTransform, true);
请注意,这需要Unity 4.6或更高。