2015-05-01 3 views
0

Так что в основном я следую этому руководству на youtube, чтобы сделать рутинную игру n slash на единстве, а im на этом этапе, когда я сделал, дал мой куб Hp и функцию Attack, чтобы уменьшить «вражеский куб» hp , Пока все хорошо, но теперь мне нужно сделать куб атаковать меня так же, как предлагается в учебнике, OP создает новый скрипт под названием EnemyAttack и просто копирует в него код PlayerAttack, просто удаляя Input. GetKey, поскольку он не нужен для computerAI. Он отлично работает для OP, но когда я пытаюсь это сделать, я получаю ошибку в переменных, используемых для playattack, которые были скопированы на «атакующий враг», который уже определен. Я знаю, что я могу изменить все имена переменных для enemyAttack, и это решит проблему, но это не имеет смысла, что, если бы у меня было 200 типов врагов, 200 переменных, которые делают то же самое, кажется неправильным. У кого-нибудь есть идея, почему я не могу просто скопировать пасту, и OP может?член уже был определен

Извините за плохой английский, я перечислить код выше.

using UnityEngine; 
using System.Collections; 

public class PlayerAtack : MonoBehaviour 
{ 

    public GameObject target; 
    public float attackTimer; 
    public float cooldown; 
    void Start() 
    { 
     attackTimer = 0; 
     cooldown = 2.0f; 
    } 


    void Update() 
    { 
     if (attackTimer > 0) 
     { 
      attackTimer -= Time.deltaTime; 
     } 
     if (attackTimer < 0) 
     { 
      attackTimer = 0; 
     } 
     if (Input.GetKeyUp(KeyCode.F)) 
     { 
      if (attackTimer == 0) 
      { 
       Attack(); 
       attackTimer = cooldown; 
      } 
     } 
    } 

    private void Attack() 
    { 
     Vector3 dir = (target.transform.position - transform.position).normalized; 
     float direction = Vector3.Dot(dir, transform.forward); 
     float distance = Vector3.Distance(target.transform.position, transform.position); 
     if (distance < 2) 
     { 

      EnemyHealth eh = (EnemyHealth)target.GetComponent("EnemyHealth"); 
      eh.AddjustCurrentHealth(-10); 
     } 
    } 

} 
+0

Я не вижу там никакого кода, который даст ошибку, можете ли вы указать, на какой строке вы видите эту ошибку? –

+1

Есть ли у вас вопрос о копировании и вставке или почему вы получаете сообщение об ошибке? EnemyAttack не входит в код, который вы указали. В вашем коде также много проблем с форматированием. –

+0

EnemyAttack - это копия PlayerAttack, эта проблема, когда я копирую код вставить, он не позволит мне скомпилировать, скажем, что цель, атака и кулдаун уже определены. –

ответ

0

Я предполагаю, что вы не переименовали класс в копию и вставленный код. У вас не может быть двух классов с одинаковым именем в одном и том же пространстве имен. Даже если имена файлов различны, вам все равно придется изменить объявление класса в соответствии с именем файла.

Смежные вопросы