敌人随机生成

时间:2014-07-01 06:00:40

标签: c# unity3d 2d

我正在制作我的第一款Unity游戏,我决定为移动设备制作5级射击游戏。我为我的敌人制作了一个随机的生成脚本,但是生成过于频繁并且一次生成太多。

这是脚本:

using UnityEngine;
using System.Collections;

public class CreateRandomOctodeamons : MonoBehaviour {

public GameObject enemyPrefab;
public GameObject enemyPrefab1;
public float numEnemies;
public float xMin = 19F;
public float xMax = 85F;
public float yMin = 3.5F;
public float yMax = -4.5F;

void Start () {

    GameObject newParent = GameObject.Find("1-background elements");

    for (int i = 0; i < numEnemies; i++)
    {
        Vector3 newPos = new Vector3(Random.Range(xMin, xMax), Random.Range(yMin, yMax), 0);
        GameObject octo = Instantiate(enemyPrefab, newPos, Quaternion.identity) as GameObject;
        octo.transform.parent = newParent.transform;

        Vector3 newPos1 = new Vector3(Random.Range(xMin, xMax), Random.Range(yMin, yMax), 0);
        GameObject octo1 = Instantiate(enemyPrefab1, newPos, Quaternion.identity) as GameObject;
        octo1.transform.parent = newParent.transform;
    }

}

请仔细查看并告诉我是否应更改任何内容或添加任何内容。我也在寻找一个通用的健康脚本,我可以添加我的游戏预制件,让他的健康显示在他的头上。

2 个答案:

答案 0 :(得分:0)

这听起来像一个或多个问题。我会尝试回答关于&#34;太多的问题。&#34;

尝试这样的事情:

void Start () {

    if (numEnemies < YourThreshholdForNumberOfEnemies)
    {
        GameObject newParent = GameObject.Find("1-background elements");

        for (int i = 0; i < numEnemies; i++)
        {
            Vector3 newPos = new Vector3(Random.Range(xMin, xMax), Random.Range(yMin, yMax), 0);

            GameObject octo = Instantiate(enemyPrefab, newPos, Quaternion.identity) as GameObject;
                octo.transform.parent = newParent.transform;

            Vector3 newPos1 = new Vector3(Random.Range(xMin, xMax), Random.Range(yMin, yMax), 0);

            GameObject octo1 = Instantiate(enemyPrefab1, newPos, Quaternion.identity) as GameObject;
                octo1.transform.parent = newParent.transform;
            }
        }
    }

答案 1 :(得分:0)

如果你想要,你可以使用这个

public GameObject[] obj; // for your enemies, using array so you can put many kind of enemy prefabs
public float spawnMin = 1f; //your minimum time enemies spawn
public float spawnMax = 2f; //your maximum time enemies spawn

void Start () 
{
    spawn();
}

void spawn()
{
    Instantiate(obj[Random.Range(0, obj.GetLength(0))], //instantiate random prefabs
        new Vector3(transform.position.x, transform.position.y, z), 
        Quaternion.identity)

    //this is the one that control how many times spawn called
    Invoke("Spawn", Random.Range(spawnMin, spawnMax)); 
}