2016-11-17 8 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を配列内のBoxLid上に移動したいが、動いていない。私はGameObjectを通して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を取り、それは、配列をループして変更することで、0.1秒ごとBoxArray内のすべてのボックスの上に横たわって作っていますBlueBoxは位置を変換します。私が見つけた最も重要なことは、BoxArrays x、y、z座標内のすべてのボックスにボックスを正しく移動するために、「新しいVector3」を使用する必要があることでした。

+0

'x、y'の代わりに' 'localPosition.x、localPosition.x''ですか? –

+0

これは私のコードの中の私の部分のタイプです。それは –

+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が呼び出されるたびに位置を少しだけ更新する必要があります。

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

それはそれに到達するまでこれは、一定の速度であなたのboxLid1へのごBlueBoxを移動します:あなたは、さまざまな方法、例がVector3MoveTowards機能になることを行うことができます。また、これはサンプルコードであり、私はこれをテストしていないことに注意してください。

関連する問題