Пример #1
0
 public void assignTarget(OldInteractable interactable, Vector3 freeSpot, int spotTaken)
 {
     this.spotTaken = spotTaken;
     target         = interactable;
     agent.SetDestination(freeSpot);
     state = State.WALKING;
 }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        ////TODO: Modify agent properties based on number of points


        //float factor = 1.0f + (1.0f * ((float)points / 4.0f));
        //Debug.Log(factor);
        //float factor = 2.0f;
        //transform.localScale *= factor;
        //transform.position = new Vector3(transform.position.x, 100.0f, transform.position.z);

        switch (state)
        {
        case State.WALKING:
            if (!agent.pathPending && !agent.hasPath)
            {
                state = State.INTERACTING;
                interactionTimeRemaining = target.timeRequired;
            }
            break;

        case State.INTERACTING:
            interactionTimeRemaining -= Time.deltaTime;
            if (interactionTimeRemaining <= 0.0f)
            {
                state = State.WAITING;
                OldInteractable oldTarget = target;
                int             oldSpot   = spotTaken;
                points += target.pointWorth;
                gameManager.notifyTaskCompletion(ID /*, target.pointWorth*/);
                oldTarget.spotsAvailable[oldSpot] = true;
            }
            break;

        case State.WAITING:
            //do an animation here or something one day.
            break;

        default:
            Debug.Log("AGENT: Shouldn't have got here");
            break;
        }
    }