Unity學習筆記八 - Survival Shooter Tutorial

後面,剛體、網格導航和動畫基礎部分可能要單分章節來說,今天繼續

EnemyMovement.cs中註釋

    void Awake ()
    {
        player = GameObject.FindGameObjectWithTag ("Player").transform;

        playerHealth = player.GetComponent <PlayerHealth> ();
        enemyHealth = GetComponent <EnemyHealth> ();
        nav = GetComponent <NavMeshAgent> ();
    }


    void Update ()
    {
        if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)  //怪物當前血量和玩家當前血量爲0
        {
    
            nav.SetDestination (player.position);  //使用enemy上的NavMeshAgent組件在網格導航上把玩家的當前座標設爲移動終點,這是一種unity自打的尋找最短路徑的方式
        }
        else
        {
            nav.enabled = false; //跳轉到這裏,說明玩家或此enemy死亡,把此enemy的NavMeshAgent設爲不可用
        }
    }


然後看下EnemyManager.cs中的註釋

這裏注意,由於空的物體EnemyManager上幫了3個EnemyManager.cs腳本,只是參數不同,所以三個腳本會同時進行

  void Start ()
    {
        InvokeRepeating ("Spawn", spawnTime, spawnTime);  //在開始後的spawnTime後,每隔spawnTime執行Spawn,有點像定時器
    }


    void Spawn ()
    {
        if(playerHealth.currentHealth <= 0f) //如果玩家血量小於0,即已死亡則直接返回,否則執行後面生成怪物的部分
        {
            return;
        }

        int spawnPointIndex = Random.Range (0, spawnPoints.Length); //這裏意思是說使spawnPointIndex等於0到spawnPoints.Length(按配置3個腳本中其都等於1)間的整數,斷點測試從來都返回了,因而判斷Range(min,Max),不會等於Max的值

        Instantiate (enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation); //spawnPoints就是我們建立的3個空的座標點,爲一個新的enemy實體體統位置的,初始朝向信息,這句指在位置spawnPoints[spawnPointIndex].position = spawnPoints[0].position ,以spawnPoints[0].rotation的轉向,按照enemy變量指向的Prefabs生成一個敵對怪物實體
    }

發佈了48 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章