簡體   English   中英

嘗試檢測碰撞游戲時出現 Unity 錯誤 Object 應用損壞 (Unity3d - C#)

[英]Unity Error When Trying To Detect Collided Game Object To Apply Damage (Unity3d - C#)

我正在嘗試檢測碰撞的敵人的標簽,如果它的標簽是敵人,則在其腳本(EnemyAI)中訪問它的當前健康並扣除攻擊傷害量。

代碼似乎是正確的,但是我在 Unity 中遇到了這個錯誤; “當前上下文中不存在名稱‘碰撞’”。

我有多個敵人,我已經用敵人標記了所有敵人。 這個想法是,如果玩家攻擊其中一個,它會根據它的標簽檢測到它是一個敵人,然后訪問它的腳本來施加傷害。

我目前擁有的代碼是:

                //Detect enemies in range of attack
                Collider[] hitEnemies = Physics.OverlapSphere(attackPoint.position, attackRange, enemyLayers);

                //Hurt enemy
                if (collision.gameObject.tag == "Enemy")
                {
                    //Damage them
                    collision.gameObject.GetComponent<EnemyAI>().currentHealth -= attackDamage;
                }

我還嘗試使用public void OnCollisionEnter(Collision collision) ,將代碼添加到它,然后調用它,但我需要將一個值傳遞給它。 我嘗試傳入 Collider,但我收到一個錯誤,說它是一種類型。 我嘗試了對撞機,但我得到了同樣的錯誤“當前上下文中不存在名稱'碰撞'”。

我被困住了,非常感謝您的幫助。

我已經恢復調用OnCollisionEnter(collision); 然后轉到:

        public void OnCollisionEnter(Collision collision)
        {
            if (collision.gameObject.tag == "Enemy")
            {
                //Damage them
                collision.gameObject.GetComponent<EnemyAI>().currentHealth -= attackDamage;
            }
        }

相同的錯誤消息:名稱 'collision' 在當前上下文中不存在”。

您已將 OnCollision 語法混合到代碼中。 目前,您的代碼(上下文)中的任何地方都沒有創建/設置沖突 只有重疊球返回的對撞機 因此,為什么您會收到錯誤消息。 您需要以不同的方式處理它們。

//Detect enemies in range of attack
Collider[] hitEnemies = Physics.OverlapSphere(attackPoint.position, attackRange, enemyLayers);

foreach(Collider enemyCol in hitEnemies){
  //Hurt enemy
  if (enemyCol.gameObject.tag == "Enemy")
  {
    //Damage them
    enemyCol.gameObject.GetComponent<EnemyAI>().currentHealth -= attackDamage;
  }
}

暫無
暫無

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

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