2016-08-06 5 views
-1

基本的に私は産卵後に敵に産卵する産卵スクリプト(2Dゲーム)を持っています。また、SpawnerScriptがランダムな敵に出現するように、敵のプレハブの配列を追加しました。しかし、私はトランスフォーム(a.k.a:3Dキューブ)内のランダムな位置にプレハブで産卵することにいくつか問題があります。あなたはゲームをプレイするときに私のスポーナーが何かに産卵していないのを見て、私が産卵したい敵の数を含めたことを確かめ、私のプレハブを付けたことを確認しました。また、私のプロジェクトファイルにバグがないことを確認しました。たぶん私のコードが間違っている、私は分からない。Unity2D:産卵スクリプトのトラブル

マイSpawnerScript:

public float RateOfSpawn = 1; 
public float spawnTime = 2; 

public GameObject[] enemy; 

void Start(){ 
    InvokeRepeating ("addEnemy", spawnTime, spawnTime); 
} 

void Spawn() {   
    // Random position within this transform- 3Dcube 

    var x1 = transform.position.x - GetComponent<Renderer>().bounds.size.x/2; 
    var x2 = transform.position.x + GetComponent<Renderer>().bounds.size.x/2; 

    var spawnPoint = new Vector2 (Random.Range (x1, x2), transform.position.y); 
    int enemyIndex = enemy.Length; 
    Instantiate (enemy[enemyIndex],spawnPoint,Quaternion.identity); 
} 
} 

いただきありがとうございます:)

答えて

1

をあなたはそれを動作させるために適切な機能を呼び出す必要があります。

void Start() 
{  
    InvokeRepeating ("Spawn", spawnTime, spawnTime); 
} 

あなたは"Spawn"の代わり"addEnemy"を呼び出す必要があります。

Instanatiateも適切なインスタンス化のために変更してください。

Instantiate (enemy[Random.Range (0, enemyIndex)], spawnPoint, Quaternion.identity); 

enemy[Random.Range (0, enemyIndex)]あなたは敵のインデックス0の配列からenemyIndex-1にランダムな敵を選択できます。

例外の原因は、配列の長さをインデックスとして置きます。最大インデックスの制限は常にlength-1です。

+0

ありがとうございますが、私はこのエラーがあります:IndexOutOfRangeException:配列インデックスが範囲外です。 SpawnScript.Spawn() –

+0

IndexOutOfRangeExceptionは、存在しない配列要素のアクセシビリティを試みているために発生します。 enemyIndex変数に1を引く必要があります:int enemyIndex = enemy.Length -1; –

+0

はい、必要に応じて編集します。整数の範囲の場合、最大制限は排他的です。だから減算の必要はありません。直接長さを置くOPは例外を引き起こした。 OPが長さから1を引いたとしても、常時インスタンス化されるゲームオブジェクトは1つだけです。 –

関連する問題