Exemple #1
0
 public virtual void justGotHit()
 {
     mustWalkTimer = timeMustWalkAfterHit;
     if (health < panicPoint)
     {
         if (state != FSMState.FSM_FLEE)
         {
             //path = null;
             //pathIndex = 0;
             objective   = GrazingArea.getEscape(transform.position, Random.Range(80.0f, 250.0f)).transform.position;
             objective.y = Terrain.activeTerrain.SampleHeight(objective);
             //lookToward(objective);
             state = FSMState.FSM_FLEE;
             rallyEscape(path, 100f, objective);
         }
     }
     else if (state != FSMState.FSM_CHASE)
     {
         state = FSMState.FSM_CHASE;
         // = null;
         //pathIndex = 0;
     }
     if (focusCreature == null)
     {
         focusCreature = thePlayer;
     }
 }
Exemple #2
0
    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);
            }
        }
    }