private void OnCollisionStay(Collision collision)
    {
        if (collision.collider.CompareTag("treetochop") && behaviourState != 2 && behaviourState != 3 && behaviourState != 4)
        {
            behaviourState = 1;
            //collision.collider.gameObject.tag = "Untagged"; // Remove the tag so that FindTarget won't return it
            currentTree = collision.collider.gameObject;
            ts          = currentTree.GetComponent <treeScript>();
            //Destroy(collision.collider.gameObject);
            //target = FindTarget();
        }

        else if (collision.collider.CompareTag("generator"))
        {
            gs             = generator.GetComponent <generatorScript>();
            behaviourState = 3;
        }
        rb.angularVelocity = Vector3.zero;
        rb.velocity        = Vector3.zero;
    }
    private void FixedUpdate()
    {
        if (behaviourState == 0)
        {
            if (target != null)
            {
                //Vector3 direction = (target.position - transform.position).normalized;
                //rb.MovePosition(transform.position + direction * speed * Time.deltaTime);

                //// Vector3 targetDir = target.position - transform.position;

                //// The step size is equal to speed times frame time.
                //Quaternion rot = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime);

                ////Apply the rotation
                //transform.rotation = rot;

                //// put 0 on the axys you do not want for the rotation object to rotate
                //transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
                agent.SetDestination(target.position);
            }

            float distance = (target.transform.position - transform.position).sqrMagnitude;
            if (distance <= 1.5f)
            {
                behaviourState = 1;
            }
        }

        if (behaviourState == 1)
        {
            ts.health -= loggingSpeed * Time.deltaTime;
            Vector3 lookAtPoint  = new Vector3(currentTree.transform.position.x, transform.position.y, currentTree.transform.position.z);
            Vector3 turningPoint = Vector3.Slerp(transform.position, lookAtPoint, Time.deltaTime * 0.1f);
            transform.LookAt(turningPoint);
            if (ts.isAlive == false)
            {
                currentTree.tag = "Untagged";
                nearestTree     = null;
                Destroy(currentTree);
                gameController.forestPower -= pointsLostPerTree;
                target         = FindTarget();
                behaviourState = 0;
                navMeshBaker.bakeNumber++;
            }
        }

        if (behaviourState == 2)
        {
            if (generator != null)
            {
                //Vector3 direction = (generator.transform.position - transform.position).normalized;
                //rb.MovePosition(transform.position + direction * speed * Time.deltaTime);
                agent.SetDestination(generator.transform.position);
            }

            float distance = (generator.transform.position - transform.position).sqrMagnitude;
            if (distance <= 1.5f)
            {
                gs             = generator.GetComponent <generatorScript>();
                behaviourState = 3;
            }
        }

        if (behaviourState == 3)
        {
            gs.Repair();
            if (gs.brokenDown == false)
            {
                behaviourState = 0;
            }
        }

        if (behaviourState == 4)
        {
            scaredyTime -= Time.deltaTime;
            if (scaredyTime <= 0)
            {
                behaviourState = previousBehaviourInt;
                agent.SetDestination(previousPos);
                scaredyTime = scareTimeInitial;
                scared      = false;
            }
            //Vector3 direction = (fleeTarget.position - transform.position).normalized;
            //rb.MovePosition(transform.position + direction * speed * Time.deltaTime);

            //// Vector3 targetDir = target.position - transform.position;

            //// The step size is equal to speed times frame time.
            //Quaternion rot = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime);

            ////Apply the rotation
            //transform.rotation = rot;

            //// put 0 on the axys you do not want for the rotation object to rotate
            //transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
            agent.SetDestination(fleeTarget.position);
        }
    }