【问题标题】:Unity rotate object around local axisunity围绕局部轴旋转物体
【发布时间】:2017-12-21 05:53:21
【问题描述】:

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

public float amount;

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

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

我认为我在这里使用了错误的转换类型,那么我应该怎么做才能使用正确的转换呢?

【问题讨论】:

  • 我认为这里的屏幕截图会很棒,包括对象的轴。很难想象你的意思是哪个方向。 (您尝试过 x、y 和 z,对吗?)
  • 我已经添加了图像,并且我已经尝试了所有轴

标签: c# unity3d


【解决方案1】:

尝试使用:

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

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

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

【讨论】:

  • 试过否定值,0到-100?
  • 那只会以另一种方式旋转
【解决方案2】:

这可能有两个部分:

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

第 2 步的代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多