成员已经定义

时间:2015-05-01 15:12:19

标签: c# unity3d

所以基本上我在youtube上遵循这个教程来制作一个黑客n团结的斜线游戏,并且我在这个步骤中我制作了我的立方体Hp和功能Attack,以减少“enemyCube”hp的。到目前为止一切都那么好,但是现在我需要让立方体攻击我,正如教程中所建议的那样,OP创建了一个名为EnemyAttack的新脚本,并且只需删除输入就可以将PlayerAttack代码粘贴到其中。 GetKey部分,因为它不需要computerAI。它适用于OP,但是当我尝试这种方式时,我得到了playerattack上使用的变量的错误,这些变量被复制到enemyattack“member already defined”。我知道我可以改变敌人攻击的所有变量名称,它可以解决问题,但这没有意义,如果我有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 个答案:

没有答案