我想在 Unity 中更改手部跟蹤的增益,但是當我嘗試移動手部時遇到了一些問題。確實,當我嘗試移動右手時,會出現一個錯誤,告訴我手的位置是無窮大。你對此有什么想法嗎?我在論壇上看到了很多東西,但我不明白是什么問題。
這是我的代碼:
// Variables
public GameObject hand;
public GameObject handRenderer;
private Vector3 posOrigin;
// Settings
public float gain;
// Start is called before the first frame update
void Start()
{
Vector3 posOrigin = handRenderer.transform.position;
}
// Update is called once per frame
void Update()
{
float dx = transfo(handRenderer.transform.position.x, posOrigin.x);
float dz = transfo(handRenderer.transform.position.z, posOrigin.z);
hand.transform.position = new Vector3(posOrigin.x dx, 0, posOrigin.z dz);
}
float transfo ( float origin, float actual )
{
return gain * (actual - origin);
}
手部渲染器是我計算的重點,因為它不能直接與物件 RightHand 一起使用。非常感謝
uj5u.com熱心網友回復:
首先Start在
Vector3 posOrigin = handRenderer.transform.position;
您正在創建一個新的區域變數。
你寧愿分配你的類欄位
void Start()
{
posOrigin = handRenderer.transform.position;
}
然后transfo似乎被倒置使用..它應該總是
current - original
但是您首先傳入的是當前的,然后是原始的,這會導致
original - current
我認為一般來說,您應該在一個步驟中執行此操作,而不是使用方法而不是使用例如
var delta = handRenderer.transform.position - posOrigin;
var sizedDelta = delta * gain;
sizedDelta.y = 0;
hand.transform.position = posOrigin sizedDelta;
然后確保你沒有意外地參考了相同的物件hand和handRenderer或handRenderer不是嵌套在下面的某個地方hand。
否則,每當您移動時hand,您Update也會移動handRenderer計算基于 => 示例
- 在 0,0,0 處初始化,增益 = 2
- 將 handRenderer 移動到
1,1,1 - => 將手移到
2,2,2 - 將 hanRenderer 移動到現在
3,3,3 - => 下一幀將手移到
6,6,6 - mves handRenderer 一直到現在
9, 9, 9 - => 下一幀將手移到
18,18,18 - ......
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525587.html
下一篇:我希望在收集所有硬幣后出現鑰匙
