Conteúdo do Curso
Jogo de Luta no Unity
Jogo de Luta no Unity
Interação do Jogador com Objetos
Interfaces
Uma interface é como um contrato que define um conjunto de métodos e propriedades que uma classe deve implementar. Ela permite que você especifique qual funcionalidade uma classe deve ter sem fornecer os detalhes da implementação.
Exemplo
Digamos que você está criando um jogo no Unity e deseja criar diferentes tipos de armas, como espadas, armas de fogo e arcos. Você poderia criar uma interface chamada IWeapon
que delineia as ações básicas que qualquer arma deve ser capaz de realizar, como Attack()
e Reload()
.
Agora, qualquer classe que queira ser considerada uma arma em seu jogo deve implementar essa interface. Por exemplo, você poderia ter uma classe Sword
ou uma classe Gun
.
Ao usar interfaces, você pode garantir que todas as suas armas tenham a mesma funcionalidade básica (Attack()
e Reload()
), mas cada uma pode ter sua própria implementação única. Isso torna seu código mais modular e fácil de gerenciar, especialmente à medida que seu jogo cresce em complexidade.
Esta é a interface que usamos em nosso jogo para marcar os inimigos como objetos que poderiam ser atacados.
TryGetComponent
Pontos Chave
raycastHit
: Isso se refere ao resultado de um acerto de raycast. Quando você lança um raio no Unity, você obtém informações sobre qual objeto;.TryGetComponent(out IGetAttacked getAttacked)
: Este método tenta recuperar um componente específico da transformação doGameObject
. A palavra-chaveout
é usada para atribuir o componente recuperado à variávelgetAttacked
, se bem-sucedido. Caso contrário, ignorará qualquer coisa sob esseif
;IGetAttacked
: Este é o tipo de interface que o código está tentando recuperar doGameObject
. Especifica que oGameObject
deve ter um componente que implemente a interfaceIGetAttacked
.
Se o GameObject
atingido pelo raycast tiver um componente que implemente a interface IGetAttacked
, a variável getAttacked
manterá uma referência a esse componente após a execução desta linha. Caso contrário, getAttacked
será atribuído um valor nulo.
Obrigado pelo seu feedback!