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; } }
void binaryDecision() { if (health > 66) { state = SNAKE_STATE.ATTACKING; } else if (health > 33) { state = SNAKE_STATE.SEEKING_COVER; } else { state = SNAKE_STATE.NEED_HEALING; } }
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; } }