Esempio n. 1
0
    void weightedRandomDecision()
    {
        Vector3 weightedValues = getHealthValue().normalized;
        float   maxBound       = weightedValues.x + weightedValues.y + weightedValues.z;
        float   choice         = Random.Range(0.0f, maxBound);

        float lowerBound = weightedValues.x,
              upperBound = weightedValues.x + weightedValues.y;

        if (choice >= 0.0f && choice <= lowerBound)
        {
            //Chose Healthy Option
            state = SNAKE_STATE.ATTACKING;
        }
        if (choice > lowerBound && choice < upperBound)
        {
            //Chose Hurt option
            state = SNAKE_STATE.SEEKING_COVER;
        }
        if (choice >= upperBound && choice <= maxBound)
        {
            //Chose critical option
            state = SNAKE_STATE.NEED_HEALING;
        }
    }
Esempio n. 2
0
 void binaryDecision()
 {
     if (health > 66)
     {
         state = SNAKE_STATE.ATTACKING;
     }
     else if (health > 33)
     {
         state = SNAKE_STATE.SEEKING_COVER;
     }
     else
     {
         state = SNAKE_STATE.NEED_HEALING;
     }
 }
Esempio n. 3
0
    void priorityDecision()
    {
        if (healthyValue > hurtValue && healthyValue > criticalValue)
        {
            state = SNAKE_STATE.ATTACKING;
        }

        if (hurtValue > healthyValue && hurtValue > criticalValue)
        {
            state = SNAKE_STATE.SEEKING_COVER;
        }

        if (criticalValue > healthyValue && criticalValue > hurtValue)
        {
            state = SNAKE_STATE.NEED_HEALING;
        }
    }