Unity围绕局部轴旋转对象

时间:2015-09-22 21:19:49

标签: c# unity3d

我正在尝试使用我的自定义编辑器围绕它的局部轴旋转对象(在本例中为人形食指)。

public float amount;

void OnGUI() {
    amount = EditorGUILayout.Slider("Rotate Amount", amount, 0, 100);
    index1.transform.localEulerAngles = new Vector3(0, 0, amount);
}

我遇到的问题是当我移动滑块时,手指向下和向前旋转,因此手指的尖端向外指向,理论上它们应指向肘部。

我认为我在这里使用了错误的转换类型,那么我该如何使用正确的转换呢?

Rotation 1 Rotation 2 Rotation 3

2 个答案:

答案 0 :(得分:0)

尝试使用:

index1.transform.Rotate(new Vector3(0, 0, amount), Space.World);

index1.transform.Rotate(new Vector3(0, 0, amount), Space.Self);

希望它能解决你的问题:)

答案 1 :(得分:0)

这可能有两个部分:

  1. 获取对象当前在本地z轴上的旋转,这是一种方法。 https://stackoverflow.com/a/47841408/228738
  2. 使用当前旋转值查找要应用于对象的旋转量。
  3. 步骤#2的

    代码

    var currentZEuler = zRotation(this.transform.rotation).eulerAngles.z;
    var deltaZEuler = amount - deltaZEuler;
    index1.transform.Rotate(0, 0, deltaZEuler, Space.Self);