Ao lado de Encapsulamento e Herança, nós temos também o Polimorfismo como um dos pilares da programação.
E sem dúvidas tem o mesmo grau de importância para qualquer programador, seja iniciante ou mais experiente.
E dominar e entender esse conceito vai te ajudar a sempre manter seus projetos o mais refinado possível.
O que é Polimorfismo?
A palavra Polimorfismo tem inspirações no Grego, Poli (muitas), Morphos (formas), em geral, significando muitas formas.
E praticamente resume bem esse conceito, afinal no Polimorfismo, as funções podem ter muitas formas de fato.
E se adequarem conforme a necessidade da classe em que estão, podendo assim a mesma função realizar ações diferentes.
E em jogos, ter um método que pode se adequar conforme a sua necessidade, é de extrema importância.
Já que basicamente, temos muitos objetos que se repetem nos games como, inimigos, upgrades, equipamentos.
Então usando Polimorfismo aliado com a Herança, você não precisa mais programar cada objeto um a um.
Mas, simplesmente fazer herdarem os atributos com a Herança e adaptar suas ações com o Polimorfismo.
Ou usando uma função de Interface, para poder adicionar esse método Polimórfico em outras classes.
Vantagens do Polimorfismo
Em jogos apesar de cada objeto ser único, eles muitas vezes executam as mesmas ações.
Por exemplo, um sistema de Dano pode servir não só para inimigos, mas tudo que venha a ser destruído com ataques.
E os ataques não precisam ser apenas do Player, mas de qualquer inimigo ou objeto que cause dano.
E sendo assim, usando o polimorfismo e herança você pode usar e adaptar o sistema de dano para todos no jogo.
E isso dispensa a necessidade de você escrever um sistema para cada objeto, bastando apenas adaptar pouca coisa.
Por exemplo, ao morrer um inimigo pode explodir, ou outro desaparecer, ou uma árvore cair.
Como Usar?
Em um Script que controle o dano (Damage Control), por exemplo, você teria atributos e funções.
E esses atributos seriam vida máxima, vida atual, etc, e uma função de levar dano e outra de morte.
E, em outro script pra causar o dano, você passaria para esse controlador o valor do dano causado.
E quando houvesse uma colisão entre objetos com esses scripts, a vida seria decrescida no valor do dano.
E por fim ao ser menor que zero, chamaria a função Death, que poderia ser adaptada usando o Virtual.
Ou seja, você poderia fazer qualquer objeto que precise desse sistema herdar dele e adaptar suas funções.
E assim customizando o valor da vida, e as funções de morte através de um Override.
E em resumo o sistema de dano não tem um tipo específico, mas funcionará bem para todos os tipos.
E assim dispensando a necessidade de criar um sistema de dano para cada objeto em seu game.
Pois, com esses dois scripts, pra causar dano e o controlador, você adapta pra qualquer necessidade.
Por fim, essa ideia pode ser utilizada para qualquer sistema que seja amplamente usada em seus jogos.
E será muito útil em Menus, sistema de dano, sistema de save, e tantos outros exemplos.
E é incrivelmente vantajoso, pois, facilmente você centraliza dezenas de scripts em um ou 2 scripts algumas vezes.
Deixamos logo abaixo o link para o primeiro vídeo de uma playlist bem bacana de programação:
Seja o primeiro a comentar.