Пример #1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        age += Time.deltaTime;
        // get more hungry/thirsty
        hunger += Time.deltaTime * 0.01f;
        thirst += Time.deltaTime * 0.01f;

        float percentGrown = age / genome["ageToReproduce"].value();

        if (percentGrown <= 1)
        {
            size = percentGrown * genome["size"].value();
        }
        else
        {
            size = genome["size"].value();
        }
        this.gameObject.transform.localScale = new Vector3(size, size, size);


        // die if you ded
        if (hunger >= 1 || thirst >= 1 || age > maxAge)
        {
            Die();
        }
        // mode changing logic
        if (thirst > 0.4)   // these threshold should be part of the genome!
        {
            mode = "thirsty";
        }
        else if (hunger > 0.6)
        {
            mode = "hungry";
        }
        else
        {
            if (recoveryTime > 0)
            {
                recoveryTime -= Time.deltaTime;
                mode          = "hungry";
            }
            else if (size < genome["size"].value())
            {
                mode = "hungry";
            }
            else
            {
                mode = "frisky";
            }
        }


        // do actions, according to mode
        bool didFindSomething = false;

        switch (mode)
        {
        case "hungry":
            didFindSomething = FixedUpdateHungry();
            break;

        case "thirsty":
            didFindSomething = FixedUpdateThirsty();
            break;

        case "frisky":
            didFindSomething = FixedUpdateFrisky();
            break;
        }
        if (didFindSomething)
        {
            wanderLocation = nullVector;
        }
        else
        {
            FixedUpdateWander();
        }


        // Update our status to the text overs
        TextTag myTextTag = gameObject.GetComponent <TextTag>();

        myTextTag.SetText("Hunger: " + hunger.ToString("0.00"));
    }