void Moving()
    {
        Debug.DrawLine(myTransform.position, movingTowards, Color.red);

        if (myState == EnemyState.Randommovemntget)
        {
            //Debug.Log(homeBaseLocation.y-maxDistanceFromHome);
            RaycastHit hit2;

            movingTowards = new Vector3(Random.Range(homeBaseLocation.x - maxDistanceFromHome, homeBaseLocation.x + maxDistanceFromHome), homeBaseLocation.y - 10.0f, Random.Range(homeBaseLocation.z - maxDistanceFromHome, homeBaseLocation.z + maxDistanceFromHome));
            Physics.Raycast(movingTowards, new Vector3(0, 50.0f, 0), out hit2, 50.0f, 1 << 14);

            Debug.DrawLine(myTransform.position, hit2.point, Color.magenta);

            movingTowards = hit2.point + new Vector3(0, GetComponent <Collider>().bounds.size.y / 2, 0);

            myState = EnemyState.Randommovent;
            Speed   = DefaultSpeed;
        }
        else if (myState == EnemyState.Attacking)
        {
            RaycastHit temp;
            // if error here make sure mask is set ***************************
            Physics.Raycast(myTransform.position, enemyTarget.transform.position - myTransform.position, out temp, 30.0f, Mask, QueryTriggerInteraction.Ignore);
            //	Debug.DrawRay (myTransform.position+myTransform.up , enemyTarget.transform.position-myTransform.position, Color.blue);
            //Debug.DrawRay
            //movingTowards=enemyTarget.transform.position;
            movingTowards = temp.point;
            enemyTarget   = temp.collider.gameObject;
            //	if(Vector3.Distance(myTransform.position,enemyTarget.transform.position) <=attackRange)
            if (temp.distance <= attackRange)
            {
                Speed = 0;
            }
            else
            {
                Speed = DefaultSpeed;
            }

            if ((temp.distance <= attackRange) && canAttack == true)
            {
                canAttack = false;
                heroai.TakeDamage(Damage);
                StartCoroutine(AttackSpeedWait(attackSpeed));
            }
        }
        else if (myState == EnemyState.Randommovent)
        {
            if (Vector3.Distance(myTransform.position, movingTowards) <= 3)
            {
                Speed = 0;

                myState = EnemyState.Idle;

                StartCoroutine(Waitfornewdirection(10.0f));
                myState = EnemyState.Randommovemntget;
            }
        }
        //movingTowards= new Vector3(movingTowards.x,.5f,movingTowards.z);
        lookAt = (movingTowards - myTransform.position);
        //lookAt =lookAt.normalized;

        if ((Physics.Raycast(myTransform.position - (myTransform.right * .25f) + myTransform.up, myTransform.forward, out hit, 3.0f, ~((1 << 10) | (1 << 9) | (1 << 12) | (1 << 8) | (1 << 16)), QueryTriggerInteraction.Ignore)) && Speed != 0)
        {
            Debug.DrawLine(myTransform.position, hit.point, Color.blue);
            // Debug.Log (hit.collider.name +this.name+this.homeBaseLocation);


            lookAt = lookAt + hit.normal * 40.0f;
        }
        else if ((Physics.Raycast(myTransform.position + (myTransform.right * .25f) + myTransform.up, myTransform.forward, out hit, 3.0f, ~((1 << 10) | (1 << 9) | (1 << 12) | (1 << 8) | (1 << 16)), QueryTriggerInteraction.Ignore)) && Speed != 0)
        {
            Debug.DrawLine(myTransform.position, hit.point, Color.red);
            //  Debug.Log (hit.collider.name+this.name+this.homeBaseLocation);


            lookAt = lookAt + hit.normal * 40.0f;
        }


        Debug.DrawRay(myTransform.position, myTransform.forward * sightRadius, Color.cyan);

        myRotate = Quaternion.LookRotation(lookAt.normalized);

        myTransform.rotation = Quaternion.Slerp(myTransform.rotation, myRotate, Time.deltaTime * turnSpeed);
    }