Lógica Fuzzy

Descrição
A lógica Fuzzy (nebulosa, difusa) é um modelo de lógica mais próximo da linguagem natural. Basea-se em palavras ao invés de números.Ao contrário da lógica binária, a lógica Fuzzy não contem somente dois estados bem demarcados, e sim um nível de pertinência a cada estado.

Digamos que uma pessoa com menos que 20 anos seja considerada jovem. Se ela tiver 20 anos e 1 dia, a linguagem natural ainda considera que a pessoa é jovem. Essa implementação gera uma tomada de decisão mais suave, como podemos perceber no gráfico abaixo.

Exemplo e implementação
Nesse exemplo, implementamos um sistema para avisar ao jogador se o inimigo está longe, médio ou perto, através da cor de sua barra de vida (verde, amarelo, vermelho). Percebe-se que estas denominações de distância não são valores binários, portanto a lógica Fuzzy encaixa perfeitamente, de modo a suavizar a implementação dessa noção de distância.

Para atingir esse comportamento, foram implementas três funções no script de Inimigo: DistanceToPortal, Fuzzyfy e FuzzyRules. Essas funções podem ser encontradas no arquivo abaixo:

EnemyController.cs