2015-07-12 72 views
0

這是一個遊戲,其目標是無限地向上飛翔。當遊戲第一次開始時,我正在彙集一系列對象,這些對象是彼此重疊的雲。當我通過它們並且它們不再可見時,我想將最底部的對象移動到創建的最後一個對象的頂部。然後我接下一個對象,並將它移動到那個對象上面。我有:使用池更改無限跑步者對象的位置

void Update() { 

    lastPosition = pool.startPosition; 

    GameObject ObjAltitude = GameObject.Find ("Rocket"); 
    startGame startGameScript = ObjAltitude.GetComponent <startGame>(); 
    altitude = startGameScript.altitude; 

    if (altitude > 100) 
    { 
     pool.pool [0] [0].transform.position = lastPosition + new Vector2 (0, 100); 
     Vector2 currentPosition = pool.pool [0] [0].transform.position = lastPosition + new Vector2 (0, 100); 
     lastPosition = currentPosition; 
     print ("ALTITUDE OVER 100"); 

    } 


} 

我想要使用時間或高度觸發何時移動下面的一個。我設置的方式是一旦我的高度達到100,將最底部的物體移到頂部。我無法想象一種方法,一旦我達到某個高度,就會逐步移動每一個。我不想爲每個高度觸發創建一堆if語句,因爲我希望這是一個無限循環。有任何想法嗎?

總共有5個對象的,我想通過旋轉:

pool [0] [0] 
pool [0] [1] 
pool [0] [2] 
pool [0] [3] 
pool [0] [4] 

這是一個遊戲,目的是向上無限飛翔。當遊戲第一次開始時,我正在彙集一系列對象,這些對象是彼此重疊的雲。當我通過它們並且它們不再可見時,我想將最底部的對象移動到創建的最後一個對象的頂部。然後我接下一個對象,並將它移動到那個對象上面。我有:

void Update() { 

    lastPosition = pool.startPosition; 

    GameObject ObjAltitude = GameObject.Find ("Rocket"); 
    startGame startGameScript = ObjAltitude.GetComponent <startGame>(); 
    altitude = startGameScript.altitude; 

    if (altitude > 100) 
    { 
     pool.pool [0] [0].transform.position = lastPosition + new Vector2 (0, 100); 
     Vector2 currentPosition = pool.pool [0] [0].transform.position = lastPosition + new Vector2 (0, 100); 
     lastPosition = currentPosition; 
     print ("ALTITUDE OVER 100"); 

    } 


} 

我想要使用時間或高度觸發何時移動下面的一個。我設置的方式是一旦我的高度達到100,將最底部的物體移到頂部。我無法想象一種方法,一旦我達到某個高度,就會逐步移動每一個。我不想爲每個高度觸發創建一堆if語句,因爲我希望這是一個無限循環。有任何想法嗎?

共有5個對象的,我要輪換是:

pool [0] [0] 
pool [0] [1] 
pool [0] [2] 
pool [0] [3] 
pool [0] [4] 

基於serhiyb的回答我修改了代碼,例如:

void Update() { 


    GameObject ObjAltitude = GameObject.Find ("Rocket"); 
    startGame startGameScript = ObjAltitude.GetComponent <startGame>(); 
    altitude = startGameScript.altitude; 
    v2Altitude = new Vector2(0,altitude); 
    int poolIndex = (((int)altitude)/100) % 5/*pool size goes here*/; 

    //pool.pool [0] [poolIndex].transform.position = lastPosition + new Vector2 (0, 100); 
    pool.pool [0] [poolIndex].transform.position = v2Altitude + new Vector2 (0, 100); 
    Vector2 currentPosition = pool.pool [0] [poolIndex].transform.position = v2Altitude + new Vector2 (0, 100); 
    //lastPosition = currentPosition; 
} 

這是工作這是偉大的,但發生了一些我不完全瞭解的事情。這導致我創建的第一個對象與相機一起移動。但是,除了攝像頭看不到的物體移動外,所有物體都在前面移動。所以它正在工作,但爲什麼這個對象正在移動?

回答

0
void Update() { 

    lastPosition = pool.startPosition; 

    GameObject ObjAltitude = GameObject.Find ("Rocket"); 
    startGame startGameScript = ObjAltitude.GetComponent <startGame>(); 
    altitude = startGameScript.altitude; 

    int poolIndex = (((int)altitude)/100) % 5/*pool size goes here*/; 

     pool.pool [0] [poolIndex].transform.position = lastPosition + new Vector2 (0, 100); 
     Vector2 currentPosition = pool.pool [0] [poolIndex].transform.position = lastPosition + new Vector2 (0, 100); 
     lastPosition = currentPosition; 
    } 
+0

這導致我的物體高得離譜並繼續上升。 y座標約在100-1000之間,這會導致我的物體在y座標上超過100k。 – th3ramr0d

+0

嘗試根據高度設置物體位置。類似於pool.pool [0] [poolIndex] .transform.position = altitude + new Vector2(0,100)而不是跟蹤currentPosition和lastPosition。 – serhiyb

+0

如果我在其中設置高度變量,它會使我的對象隨着高度增加而上升 – th3ramr0d