我有一个3d无限跑步赛车类型的游戏,其中玩家是静止的,背景移动。在我的游戏中,我想随着时间的推移随机产生硬币,硬币必须在玩家之前产生很多,并且硬币的z轴减小,保持y轴恒定,x轴值随机范围为-2和硬币正确产卵,但它们是以不规则的方式产生的。我在我的场景中创建了四个硬币游戏对象,我想在一条直线上生成4个硬币,因为玩家可以轻松地收集硬币,因为它们是直线连接到玩家。玩家的动作仅在x轴上从-2到2.现在我的问题是硬币不规则地产生,因为玩家不能轻易收集硬币。这是我的代码:
function Update()
{
MoveCoin();
}
function MoveCoin()
{
ReleaseCoin();
//CoinsOnRoad is an array containing the current coins which are on the road
//CoinPool is the array of coins
for(var i:int =0;i<CoinsOnRoad.length;i++)
{
var gcoin:GameObject = CoinsOnRoad[i] as GameObject;
gcoin.transform.position.z-=3*speed*Time.deltaTime;
if(gcoin.transform.position.z>=-10)
{
//Do nothing if the coin is on the visible area of the road. If it becomes invisible
//remove the coins from CoinsOnRoad Array and insert the coin back to the CoinPool Array
}
else
{
CoinPool.push(gcoin);
CoinsOnRoad.remove(gcoin);
}
}
}
function ReleaseCoin()
{
if(CoinPool.length==0)
{
}
else
{
var coin:GameObject=CoinPool.shift() as GameObject;
CoinsOnRoad.push(Instantiate(coin,new Vector3(Random.Range(-2.0,2.0),0.3,30+Random.Range(1,10)),Quaternion .identity));
}
}
硬币正确产卵,但顺序不规则。有人可以帮帮我吗?提前谢谢。由于我是团结的新手,我不知道我的游戏逻辑是否正确。如果我的代码中的某些地方出错,可以有人纠正我的代码。
答案 0 :(得分:0)
如果你想让硬币以直线产生,可能只是让它们不会随机产生。
在你的循环中,你会产生每个具有不同随机位置的个体硬币。相反,您应该随机选择位置值并将其保存到变量中。然后你应该用这个来循环生成多个硬币。
像这样:
var xPos = Random.Range(-2.0, 2.0);
var forwardOffset = Random.Range(1, 10);
var i = 0;
var lineLength = Random.Range(1, CoinPool.length);
while(i < lineLength) {
var coin:GameObject=CoinPool.shift() as GameObject;
CoinsOnRoad.push(Instantiate(coin,new Vector3(xPos, 0.3, 30 + forwardOffset + i), Quaternion.identity));
i += 1;
}