2013-04-26 34 views
0

我正在實例化具有特定偏移量的多個子項的GameObject。這個共同例程每個孩子一次。我想隨機化孩子的Y位置並將它們拉回到正確的endPosition。但是,由於某種原因,我的EndPosition正受到這種變化的影響。無論開始位置的隨機Yoffset是什麼,零件都會結束組裝。統一C#向量3不匹配

我只隨機化了startPos.y;爲什麼我的endPos受到影響?

很多人被這個問題困住了,所以任何幫助都會很棒。

IEnumerator TransitionAnim(Transform part, bool start) 
    { 
     float t = 0; 

     if (start) 
      { 
     Vector3 startPos = new Vector3(part.position.x, Random.Range(30,-30), part.position.z); 
     Vector3 endPos = new Vector3(part.position.x - startingOffset, part.position.y, part.position.z); 

     while (t < duration) 
      { 
      t += Time.deltaTime; 
      part.position = Vector3.Lerp(startPos, endPos, Mathf.SmoothStep(0,1F,t/duration));  
      yield return 0; 
      } 
      part.position = endPos; 
    } 
} 
+0

該代碼的新的Vector3運行我的機器上就好了。 EndPos.y不是隨機的。初始化startPos和endPos後,您是否嘗試過放棄一些debug.log? – Jerdak 2013-04-27 03:19:43

回答

1

我寫了一個小測試,使用上面的代碼清單,endPos沒有改變,所以問題可能在於其他函數。這是我下面的猜想:

  1. 您endPos生成依賴於部分位置的一些計算後(變換)
  2. ,你分配一個值的部分(變換)的位置,一部分的位置是改變
  3. 另一個遊戲對象改掉使用相同的變換部生成自己的endPos,但部分位置已經改變,因此本場比賽的對象將得到不同的endPos

如果我的猜測是正確的,有解決辦法:

  1. 不分配新的值到部分當前位置
  2. 嘗試使用基於部件的位置