コード例 #1
0
    private void Awake()
    {
        ui = FindObjectOfType <UI_Manager>();

        timer = TIMER_START;

        socialState = Social_State.interacting;

        moodState = Mood_State.neutral;
    }
コード例 #2
0
    public void AnimationEvaluation(Mood_State moodState)
    {
        switch (moodState)
        {
        case Mood_State.neutral:
            ani.SetBool("Neutral", true);
            ani.SetBool("Happy", false);
            ani.SetBool("Sad", false);
            ani.SetBool("Angry", false);

            break;

        case Mood_State.happy:
            ani.SetBool("Happy", true);
            ani.SetBool("Neutral", false);
            ani.SetBool("Sad", false);
            ani.SetBool("Angry", false);

            break;

        case Mood_State.sad:
            ani.SetBool("Neutral", false);
            ani.SetBool("Happy", false);
            ani.SetBool("Sad", true);
            ani.SetBool("Angry", false);

            break;

        case Mood_State.angry:
            ani.SetBool("Neutral", false);
            ani.SetBool("Happy", false);
            ani.SetBool("Sad", false);
            ani.SetBool("Angry", true);

            break;
        }
    }
コード例 #3
0
    // Performs behaviour adjustments based on current PAD
    private void EvaluatePAD()                                                               //***************************************
    {
        // ============== Materials ==============
        // Neutral
        if ((pleasure == 0.0f && arousal == 0.0f && dominance == 0.0f) && meshRenderer.material != emotiveMaterials[0])
        {
            meshRenderer.material = emotiveMaterials[0];
            moodState             = Mood_State.neutral;
        }
        //Happy
        else if ((pleasure > 0.0f && arousal > 0.0f && dominance < 0.0f) && meshRenderer.material != emotiveMaterials[1])
        {
            meshRenderer.material = emotiveMaterials[1];
            moodState             = Mood_State.happy;
        }
        //Scared
        else if ((pleasure < 0.0f && arousal > 0.0f && dominance < 0.0f) && meshRenderer.material != emotiveMaterials[2])
        {
            meshRenderer.material = emotiveMaterials[2];
            moodState             = Mood_State.sad;
        }
        //Angry
        else if ((pleasure < 0.0f && arousal > 0.0f && dominance > 0.0f) && meshRenderer.material != emotiveMaterials[3])
        {
            meshRenderer.material = emotiveMaterials[3];
            moodState             = Mood_State.angry;
        }

        aniManager.AnimationEvaluation(moodState);

        /* Check PAD values then:
         * - Change State Material                          [x]
         * - Change Animation emphasis(Sad = Sad Wave)      [x]
         * - Change Sound Files(Angry = Angry Speech)       [ ]
         */

        // Check Social state
        switch (socialState)
        {
        case Social_State.interacting:

            // Reset Bordem Timer
            timer = TIMER_START;

            socialState = Social_State.noInteraction;

            break;

        case Social_State.noInteraction:

            // Decrease timer for bordem
            if (timer >= 0.0f)
            {
                timer -= Time.deltaTime;
            }
            else if (arousal >= -1.0f)
            {
                BordemDecrease();
            }

            break;

        case Social_State.waiting:

            // Ignore this enum

            break;

        default:
            Debug.LogError("Social_State not initialised!");
            break;
        }
    }