protected virtual void updateIdleState() { currTaskTimer -= Time.deltaTime; if (currTaskTimer < 0.0f) { objective = GrazingArea.getCloset(transform.position).getWanderPoint(); objective.y = Terrain.activeTerrain.SampleHeight(objective); lookToward(objective); Debug.DrawLine(objective, objective + Vector3.up * 20.0f); currTaskTimer = Random.Range(5.0f, 15.0f); } else { objective.y = Terrain.activeTerrain.SampleHeight(objective); if (Vector3.Distance(objective, transform.position) > walkSpeed) { moveToward(new Vector3(objective.x, transform.position.y, objective.z), walkSpeed, footstepWalk); } else { //if (GetComponent<Animation>().IsPlaying(walkAnimation)) GetComponent <Animation>().Play("idle"); } } if (eyes == null) { //eyes = new Vector3(transform.position.x,transform.position.y+1f,transform.position.z); objective = GrazingArea.getCloset(transform.position).getWanderPoint(); //while (Vector3.Distance(objective,transform.position) < 15.0f) // objective = GrazingArea.getCloset(transform.position).getWanderPoint(); objective.y = Terrain.activeTerrain.SampleHeight(objective); } else if (eyeball != null) { eyes = eyeball.transform.position; Ray collisionCheck = new Ray(eyes, new Vector3(objective.x, objective.y + 0.1f, objective.z)); RaycastHit hit; /////////Debug.DrawLine (eyeball.transform.position,objective); Debug.DrawLine(eyeball.transform.position, transform.position); if (Physics.Raycast(collisionCheck, out hit, 1f)) { objective = GrazingArea.getCloset(transform.position).getWanderPoint(); //while (Vector3.Distance(objective,transform.position) < 15.0f) // objective = GrazingArea.getCloset(transform.position).getWanderPoint(); objective.y = Terrain.activeTerrain.SampleHeight(objective); } } }