这是一个游戏,其目标是无限地向上飞翔。当游戏第一次开始时,我正在汇集一系列对象,这些对象是彼此重叠的云。当我通过它们并且它们不再可见时,我想将最底部的对象移动到创建的最后一个对象的顶部。然后我接下一个对象,并将它移动到那个对象上面。我有:使用池更改无限跑步者对象的位置
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