在无限的赛跑者3d游戏中随机产卵硬币

时间:2014-10-31 06:38:17

标签: unity3d gameobject

我有一个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));

    }
}

硬币正确产卵,但顺序不规则。有人可以帮帮我吗?提前谢谢。由于我是团结的新手,我不知道我的游戏逻辑是否正确。如果我的代码中的某些地方出错,可以有人纠正我的代码。

1 个答案:

答案 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;
}