2016-11-17 95 views
-4
public void Update(){ 
    GameObject[] BoxArray = new GameObject[16]{BoxLid1, BoxLid2, BoxLid3, BoxLid4, BoxLid5, BoxLid6, BoxLid7, BoxLid8, BoxLid9, BoxLid10, BoxLid11, BoxLid12, BoxLid13, BoxLid14, BoxLid15, BoxLid16}; 

    for(int i = 0; i < BoxArray.Length; i++){ 
     Transform theBoxLid = BoxArray[i].transform; 
     BlueBox.transform.Translate(theBoxLid.localPosition.x, theBoxLid.localPosition.y, 0); 
     Debug.Log(theBoxLid.localPosition.x); 

    } 
} 

我有上面發起的蓋子,這不是問題。我想讓blueBox在數組中的BoxLids上移動,但它根本不移動。我不知道通過GameObjects的for循環發生了什麼

我已經找到了解決,這和它是:

IEnumerator MoveBlueBox(){ 
    GameObject[] BoxArray = new GameObject[16]{BoxLid1, BoxLid2, BoxLid3, BoxLid4, BoxLid5, BoxLid6, BoxLid7, BoxLid8, BoxLid9, BoxLid10, BoxLid11, BoxLid12, BoxLid13, BoxLid14, BoxLid15, BoxLid16}; 

    for(int i = 0; i < BoxArray.Length; i++){ 
     Transform theBox = BoxArray[i].transform; 
     BlueBox.transform.position = new Vector3(theBox.position.x, theBox.position.y, 0.0f); 
     yield return new WaitForSeconds(0.1f); 
    } 
} 

這是我在BLUEBOX並使其躺在在BoxArray每個箱子的頂部由通過陣列循環和改變每0.1秒BlueBoxs轉換位置。我發現的主要問題是,我需要使用「新的Vector3」將Box正確地移動到BoxArrays的x,y和z座標中的每個框。

+0

它應該是'localPosition.x,localPosition.x'而不是'x,y'嗎? –

+0

這是我的代碼在我的代碼中的typeo它是 –

+0

我們需要看到代碼轉換和翻譯 – CodingYoshi

回答

0
IEnumerator MoveBlueBox(){ 
    GameObject[] BoxArray = new GameObject[16]{BoxLid1, BoxLid2, BoxLid3, BoxLid4, BoxLid5, BoxLid6, BoxLid7, BoxLid8, BoxLid9, BoxLid10, BoxLid11, BoxLid12, BoxLid13, BoxLid14, BoxLid15, BoxLid16}; 

    for(int i = 0; i < BoxArray.Length; i++){ 
     Transform theBox = BoxArray[i].transform; 
     BlueBox.transform.position = new Vector3(theBox.position.x, theBox.position.y, 0.0f); 
     yield return new WaitForSeconds(0.1f); 
    } 
} 

我想出了實際上試圖幫助的人。

3

我仍然不確定你的意思是「移過來」。你想先將你的藍盒移動到BoxLid1,然後BoxLid2等?

同樣爲了讓你的箱子看起來像它的移動,你需要每次更新你的位置只有一點點Update被調用。你可以做的各種方法,一個例子將是Vector3MoveTowards功能:

public class Move : MonoBehaviour 
{ 
    public GameObject boxLid1; 
    public float speed = 5.0f; 

    public void Update() 
    { 
     BlueBox.transform.position = Vector3.MoveTowards(
      BlueBox.transform.position, boxLid1.transform.position, 
      Time.deltaTime * speed); 
    } 
} 

這將移動您BlueBox對你boxLid1以一定的速度,直到達到它。還要注意,這是示例代碼,我沒有測試過這個。

相關問題