Пример #1
0
    public void StartDrinkTask()
    {
        activeTask.task   = GOAPAction.Task.DRINK;
        activeTask.status = GOAPAction.Status.DOING;
        step = GOAPAction.Step.FINDING_LOCATION;

        Debug.Log("Task type and status " + activeTask.task + " : " + activeTask.status);


        DrinkTask();
    }
Пример #2
0
    void DrinkTask()
    {
        GameObject drinkingSpot = new GameObject();

        if (FindDrinkingSpot(ref drinkingSpot))
        {
            Debug.Log(drinkingSpot.name);

            GoToPosition(drinkingSpot.transform.position);

            step = GOAPAction.Step.MOVING_TO_LOCATION;
        }
        else
        {
            activeTask.status = GOAPAction.Status.CANCELED;
            planner.CancelTask();
        }
    }
Пример #3
0
 void UpdateMoving()
 {
     if (!agent.pathPending)
     {
         if (agent.remainingDistance <= agent.stoppingDistance)
         {
             if (!agent.hasPath || agent.velocity.sqrMagnitude == 0f)
             {
                 moving = false;
                 step   = GOAPAction.Step.AT_LOCATION;
             }
         }
         else
         {
             moving = false;
         }
     }
 }