Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos II / Aula
Você deve implementar o OnDrawGizmos em um script sempre que desejar desenhar Gizmos, os quais podem inclusive ser manipulados com o mouse. Nesta aula utilizaremos Gizmos para desenhar quatro linhas, as quais correspondem às bordas do retângulo representando a área de geração dos prefabs. É importante observar que essa função não é executada se o script ao qual essa área pertence não está expandido no Inspector.
O esqueleto padrão do método OnDrawGizmos é assim:
void OnDrawGizmos() {
// desenho dos Gizmos aqui...
}
O funcionamento dos Gizmos segue o seguinte padrão: inicialmente você modifica a cor dos Gizmos e em seguida utiliza os comandos para desenhá-los na tela com a cor selecionada. Se deseja desenhar vários Gizmos com muitas cores, basta modificar a cor novamente, imediatamente, antes de desenhar cada Gizmo.
Para mudar a cor atual dos Gizmos você deve usar o seguinte comando:
Gizmos.color = Color.yellow;
Isso mudará a cor dos Gizmos desenhados abaixo desse comando para amarelo, por exemplo. Vamos testar agora o desenho de uma simples linha amarela no editor a partir do centro até um ponto a 10 unidades de distância no eixo X, ou seja, X+10. A implementação ficará assim:
void OnDrawGizmos() {
Gizmos.color = Color.yellow;
Vector3 centro = transform.position;
Vector3 final_da_linha = new Vector3 (centro.x + 10, centro.y, centro.z);
Gizmos.DrawLine (centro, final_da_linha);
}
Repare que o centro é a posição atual do GameObject com o script anexado (transform.position) e a variável final_da_linha é criada como um novo Vector3 com as mesmas posições do centro, porém com o valor do eixo X adicionado de 10 unidades. Logo após usamos o comando Gizmos.DrawLine(centro, final_da_linha) para desenhar uma linha entre esses dois pontos. Salve o script e volte ao Unity. Você verá uma linha amarela desenhada a partir do centro do IntanciarPrefabs com 10 unidades de tamanho, mesmo sem executar o jogo, como na Figura 12. Legal, não é mesmo?
Versão 5.3 - Todos os Direitos reservados