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); }