簡體   English   中英

統一圍繞局部軸旋轉對象

[英]Unity rotate object around local axis

我試圖使用我的自定義編輯器圍繞對象的局部軸(在本例中為類人動物食指)旋轉對象。

public float amount;

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

我遇到的問題是,當我移動滑塊時,手指向下和向前旋轉,因此手指的尖端向外指向,理論上它們應該指向肘部。

我想我在這里使用了錯誤的轉換類型,那么我應該怎么做才能使用正確的轉換?

旋轉1 旋轉2 旋轉3

嘗試使用:

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

要么

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

希望它能解決您的問題:)

可能有兩個部分:

  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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM