0

私は、プレイヤーが静止していて背景が動く 3D 無限ランナー カーレース タイプのゲームを持っています。私のゲームでは、時間の経過とともにコインをランダムにスポーンしたいのですが、コインはプレーヤーのかなり前にスポーンする必要があり、コインの z 軸は、y 軸を一定に保ち、x 軸の値を -2 のランダムな範囲に保ちながら縮小されます。 2. コインは正常に生成されますが、不規則に生成されます。シーンに 4 つのコイン ゲーム オブジェクトを作成しました。4 つのコインを直線上にスポーンさせたいと考えています。これは、コインがプレイヤーに向かって一直線に並んでいるため、プレイヤーがコインを簡単に収集できるようにするためです。プレーヤーの動きは、-2 から 2 までの x 軸にのみあります。私の問題は、プレーヤーがコインを簡単に収集できないため、コインが不規則に生成されることです。これは私のコードです:

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));

    }
}

コインは正しく生成されていますが、順序が不規則です。誰かが私を助けてくれますか?前もって感謝します..私は unity に慣れていないので、自分のゲーム ロジックが正しいかどうかさえわかりませんでした。コードのどこかが間違っている場合、誰かがコードで私を修正できますか。

4

1 に答える 1

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;
}
于 2014-11-06T20:52:58.637 に答える