Unity3D:在平移和旋转后,将子对象置于其原始位置

问题描述

  1. 这是立方体及其子对象圆锥体的原始位置。

enter image description here

  1. 在这里,我已经将圆锥转换了2个单位

    enter image description here

  2. 现在我已将父多维数据集旋转到与Y轴成25度角

    enter image description here

  3. 如果我们再次将圆锥2个单位平移,则它不在原始位置

    enter image description here

在将圆锥平移回原来的位置时,我需要对圆锥应用什么公式?

解决方法

如果您要使用Unity中的transform.Translate()方法移动对象,并且想要保持相对于其父对象的相对状态,则执行此操作的一种方法是将父对象的转换传递给Space中的Translate

像这样:

var parent = transform.parent;

transform.Translate(0,2,parent); // 2. Over here,I have translated the cone for 2 units
parent.Rotate(0,25,0); // 3. Now I have rotated the parent cube around 25 degrees wrt to the Y-axis

transform.Translate(0,-2,parent); // 4. If we translate the cone 2 units back again,it's now in the original position

我在新的Unity项目中重新创建了您的问题,并使用上述内容修复了该问题。