将实例化的预制件添加到父级后,我想在自动中心周围旋转新的预制件。
GameObject clone = Instantiate(mockup, transform.position, transform.rotation) as GameObject;
clone.transform.parent = gameObject.transform;
clone.transform.localPosition = Vector3.zero;
clone.transform.Rotate (0, 45, 0);
但是它变形了预制件。如果我没有设置父级,它将旋转而不会变形。我也尝试了RotateAround并传递clone.transform.localePosition
作为参数,但仍然相同。
我也尝试将中心作为
clone.GetComponent<Renderer>().bounds.size;
并添加到位置并作为参数传递但仍然没有成功。
如何在没有任何畸形的情况下围绕自身中心旋转物体?
Misshape:相机在上方,我缩放并旋转立方体但是从上面它不是矩形,因为它应该是
没有轮换:
答案 0 :(得分:0)
经过实验,我能够复制你的探测器。您的问题出在这行代码GameObject clone = Instantiate(mockup, transform.position, transform.rotation) as GameObject;
您正在传递transform.rotation
作为新Instantiated
GameOBject的新位置。 transform.rotation
是脚本附加到的GameObject的旋转。您的脚本附加到的GameObject的 X 或 Z 轴是 0 。我的25岁,你的应该是类似的。
有几种解决方法:
1 。只需确保脚本附加的GameObject的 X , Y 或 Z 轴设置为 0 。如果您不想更改此设置,请执行以下其他解决方案之一。
2 。解决此问题的另一种方法是不证明Instantiate
期间的位置或旋转,因为您将用{{覆盖位置和旋转两者1}}和clone.transform.localPosition = Vector3.zero;
稍后。因此,您当前的代码是多余的。
clone.transform.Rotate (0, 45, 0);
3 。最后,解决此问题的另一种方法是向第三个参数而不是GameObject clone = Instantiate(mockup) as GameObject;
提供 0 轮换Quaternion.Euler(Vector3.zero)
。
transform.rotation