敌人随机刷出

本文关键字:随机 敌人 | 更新日期: 2023-09-27 18:10:50

我正在制作我的第一款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;
    }
}

请过目一下,如果有需要修改或补充的地方,请告诉我。我也在寻找一个通用的健康脚本,我可以只是添加我的游戏预制件,让他的健康显示在他的头上。

敌人随机刷出

这听起来像是三个或更多的问题。我会试着回答关于"太多"的问题。

试试这样写:

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

如果你愿意,你可以使用这个

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