[英]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.