团结,对敌人,多次BUG

时间:2017-05-16 18:57:15

标签: c# unity2d

我有一个敌人的预制件,如果我在同一场景中放置相同的预制件超过1次只有其中一个工作,那个工作的一个总是我放在场景中的最后一个预制件:

其他敌人在那里,但部分脚本似乎不起作用,另一部分是。

Foc scriptFoc;
    GameObject focGO;
    private Animator animator;
    private Transform target;
    private Vector3 relativePoint;

    private float tempsActual = 0.0f;
    private bool foc = true;

    public float duracioNormal;
    public float duracioFoc;

    void Start () {
        target = GameObject.FindGameObjectWithTag("Player").transform;
        animator = this.GetComponent<Animator>();
        focGO = GameObject.FindGameObjectWithTag("Foc");
        scriptFoc = focGO.GetComponent<Foc>();
        scriptFoc.actiu();
    }

    void Update ()
    {
        if (drac_Actiu())
        {
            if(!foc)
            {
                tempsActual += Time.deltaTime;
                if (tempsActual >= duracioNormal)
                {
                    scriptFoc.actiu();
                    tempsActual = 0.0f;
                    foc = true;
                    animator.SetBool("Foc", true);
                }
            }
            else if(foc)
            {
                tempsActual += Time.deltaTime;
                if (tempsActual >= duracioFoc)
                {
                    scriptFoc.inactiu();
                    tempsActual = 0.0f;
                    foc = false;
                    animator.SetBool("Foc", false);
                }
            }
        }
    }

    private bool drac_Actiu()
    {
        relativePoint = transform.InverseTransformPoint(target.position); //Punt del jugador

        if (relativePoint.x < 2.0f || relativePoint.x > -2.0f)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

你有什么想法吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

没有足够的信息可以肯定地知道。脚本的哪个部分不起作用?你说它的一部分呢?

您是否忘记在某些游戏对象的检查器中设置公共变量的值?

如果每个游戏对象标记为“Foc”,那么focGO可能是您添加的最后一个游戏对象,因为它只是寻找一个然后停止检查。

根据所提供的信息,这些是我的猜测。

答案 1 :(得分:1)

focGO = GameObject.FindGameObjectWithTag("Foc");

除非我读错了,否则你的每个实例都会通过其标签查找游戏对象,因此完全有可能他们都找到了同一个(你添加到场景中的最后一个) )。

我相信你可能只想和“这个。[无论如何]”一起去。例如:

scriptFoc = this.GetComponent<Foc>();