這是一個遊戲,其目標是無限地向上飛翔。當遊戲第一次開始時,我正在彙集一系列對象,這些對象是彼此重疊的雲。當我通過它們並且它們不再可見時,我想將最底部的對象移動到創建的最後一個對象的頂部。然後我接下一個對象,並將它移動到那個對象上面。我有:使用池更改無限跑步者對象的位置
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;
}
這是工作這是偉大的,但發生了一些我不完全瞭解的事情。這導致我創建的第一個對象與相機一起移動。但是,除了攝像頭看不到的物體移動外,所有物體都在前面移動。所以它正在工作,但爲什麼這個對象正在移動?
這導致我的物體高得離譜並繼續上升。 y座標約在100-1000之間,這會導致我的物體在y座標上超過100k。 – th3ramr0d
嘗試根據高度設置物體位置。類似於pool.pool [0] [poolIndex] .transform.position = altitude + new Vector2(0,100)而不是跟蹤currentPosition和lastPosition。 – serhiyb
如果我在其中設置高度變量,它會使我的對象隨着高度增加而上升 – th3ramr0d