簡體   English   中英

玩家死亡時重生敵人

[英]Respawning enemies on player death

我有一個班級,我的敵人在游戲開始時產生。 當我的玩家死亡時,我想再次調用 spawn 類讓敵人再次生成。 但是當我這樣做時,什么都沒有發生。

public class EnemySpawn : MonoBehaviour
{

    public GameObject [] Enemies;
    public GameObject [] SpawnClone;
    public Transform [] locations;

    public void Start()
    {
       SpawnClone[0] = Instantiate(Enemies[0], locations[0].transform.position, Quaternion.Euler(0,0,0)) as GameObject; 
       SpawnClone[1] = Instantiate(Enemies[1], locations[1].transform.position, Quaternion.Euler(0,0,0)) as GameObject; 
       SpawnClone[2] = Instantiate(Enemies[2], locations[2].transform.position, Quaternion.Euler(0,0,0)) as GameObject;  
    }
    
}

//other class where I wanna call the Start method again to spawn enemies everytime I die
 private EnemySpawn enemyspawn;
 private void Die()
        {
            m_character.NotifyDied();

            if (m_canRespawn)
            {
                SetVulnerable();
                RemovePoison();
                m_hazards.Clear();
                gameObject.transform.position = m_spawnPosition;
                SetHealth(m_maxHealth);
                enemyspawn.Start();
            }
            else {
                Destroy(gameObject);
            }
        }

Start方法是保留的,並在啟用腳本時在框架上調用。 您應該使用另一個方法名稱。
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html

你可以這樣做,在Start上調用Spawn並在Die方法上調用

public class EnemySpawn : MonoBehaviour
{

    public GameObject [] Enemies;
    public GameObject [] SpawnClone;
    public Transform [] locations;

    public void Start()
    {
        Spawn();
    }

    public void Spawn()
    {
       SpawnClone[0] = Instantiate(Enemies[0], locations[0].transform.position, Quaternion.Euler(0,0,0)) as GameObject; 
       SpawnClone[1] = Instantiate(Enemies[1], locations[1].transform.position, Quaternion.Euler(0,0,0)) as GameObject; 
       SpawnClone[2] = Instantiate(Enemies[2], locations[2].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
    }
    
}


public class EnemySpawnCaller : MonoBehaviour
{
    public EnemySpawn enemyspawn;

    private void Die()
        {
        
        enemyspawn.Spawn();

        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM