0

我有一个敌人的预制件,如果我在同一个场景中将同一个预制件放置超过 1 次,其中只有 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;
        }
    }

你有什么想法?谢谢!

4

2 回答 2

1

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

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

是否每个游戏对象都标有“Foc”,如果是这样的话,focGO 可能是您添加的最后一个游戏对象,因为它只是要寻找一个然后停止检查。

这些是我根据给出的信息的猜测。

于 2017-05-16T19:04:50.320 回答
1
focGO = GameObject.FindGameObjectWithTag("Foc");

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

我相信您可能只想选择“this.[whatever]”。前任:

scriptFoc = this.GetComponent<Foc>();
于 2017-05-16T19:05:32.797 回答