Advertisement
  1. Game Development
  2. Unity 3D

Como criar água realista no Unity

Scroll to top
Read Time: 9 min

() translation by (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Unity é um motor de jogo multi plataforma, desenvolvido pela pela Unity Technologies e é usado para criar aplicativos para vários dispositivos como consoles, dispositivos móveis, computadores e até mesmo sites. As vantagens do Unity são sua robustez, portabilidade e comunidade; Unity suporta várias APIs bem conhecidas como Direct3D, OpenGL, OpenGL ES e o recente Vulkan.

Devido as características acima mencionadas, Unity tornou-se cada vez mais popular entre empresas AAA e programadores aspirantes.

Unity oferece suporte a várias tecnologias e componentes. Um dos componentes-chave é o sistema de água. O sistema de água do Unity permite que você adicione diferentes tipos de água em seu aplicativo ou jogo, como Water Basic, Water Pro, e Water4. Por padrão, Unity inclui vários prefabs de água (incluindo os shaders necessários, scripts e assets).

Este tutorial irá focar em explicar como funciona a água no Unity e como usá-la para criar terrenos vastos e ricos.

Pré-requisitos

Primeiro, certifique-se que você está usando a versão mais recente do Unity; caso contrário, você pode encontrar pequenas diferenças seguindo o tutorial e usar a física.

Para iniciar este tutorial, você tem dois caminhos para escolher:

  1. Iniciá-lo imediatamente, usando o projeto disponível.
  2. Completar o tutorial anterior do UNITY chamado Unity Terrain tools.

De qualquer forma, tomar um tempo e começar o projeto do tutorial anterior lhe proporcionará uma base melhor sobre Unity e suas ferramentas.

Water Basic

Eu estou assumindo que você ou começou usando o projeto  fornecido ou terminou o tutorial Unity Terrain Tools. Se isso não for o caso, você pode começar um novo projeto, mas você deve importar o pacote de assets de ambiente e criar seu próprio terreno. Se você estiver usando um novo projeto, vá ao menu principal, Assets > Import Package e selecione Environment.

De agora em diante, o tutorial está voltado para o projeto fornecido. Analisando o terreno, você pode ver que, no centro, há um buraco. Essa área foi criada especificamente para a criação de um lago. Uma maneira de fazer isso é usando o prefab chamado Water Basic.

WaterBasic - Starting pointWaterBasic - Starting pointWaterBasic - Starting point

Na guia Project, abra a pasta Assets e em seguida abra a pasta Environment. Aqui você vai encontrar duas pastas: Water e Water (Basic). Inicialmente, você trabalhará com Water (Basic). Abra-o e em seguida, abra a pasta Prefabs. Dois prefabs estão disponíveis: WaterBasicDaytime e WaterBasicNightime.

WaterBasic - PrefabsWaterBasic - PrefabsWaterBasic - Prefabs

Antes de prosseguir, aqui vai uma explicação rápida sobre prefabs. Um prefab atua como um modelo de objeto de um jogo. Ele permite que você crie novas instâncias do objeto na cena, e todas as edições feitas com um asset do prefab são imediatamente refletidas em todas as instâncias, produzidas a partir dele.

No entanto, você também pode substituir componentes e configurações para cada instância individualmente. Isto pode ser bastante útil se você precisa de ter vários objetos do mesmo tipo em uma cena, ou em várias cenas. Usando prefabs, você não precisa criar cada objeto a partir do zero, e se você quiser fazer algum ajuste, ele irá atualizar automaticamente todas as instâncias.

Como você deve ter adivinhado pelos nomes, você deve usar WaterBasicDaytime em cena diurnas, WaterBasicNightime em cenas noturnas. Ambos funcionam exatamente da mesma forma, mas o último é mais escuro.

Neste projeto, a cena é iluminada, então você vai usar o prefab WaterBasicDaytime. Selecione o prefab com o mouse e arraste-o para a cena (mais ou menos dentro do buraco no chão, semelhante à figura a seguir). Isto irá adicionar o WaterBasicDaytime na cena.

Em seguida, selecione a água e ajuste a sua posição e escala.

WaterBasic - Position and shapeWaterBasic - Position and shapeWaterBasic - Position and shape

Quando você tiver a água posicionada e configurada como você quer, vamos dar uma rápida olhada no que você pode fazer com ele. Se você selecioná-la e ir na aba Inspector, você verá vários componentes: um componente Transform que você já usou, um Water Basic Plane (Mesh Filter), um Mesh Renderer onde o material da água está configurado, o script Water Basic Script e um Shader.

WaterBasic - Inspector PropertiesWaterBasic - Inspector PropertiesWaterBasic - Inspector Properties

Dentro do Mesh Renderer, você pode alterar algumas opções relacionadas à geração de sombra como Cast Shadows ou Receive Shadows. Você também pode modificar várias propriedades relacionadas ao reflexo. Definida Cast Shadows  e Receive Shadows para On. Em seguida, em Reflection Probes, defina como Blend Probes And Skybox.

WaterBasic - Mesh RendererWaterBasic - Mesh RendererWaterBasic - Mesh Renderer

Shader WaterBasicDaytime permite definir alguns parâmetros para a água, como Wave scale e Wave speed. Você pode brincar com esses valores para ver algumas mudanças gráficas, mas por agora, deixe o padrão.

WaterBasic - Water Basic Day TimeWaterBasic - Water Basic Day TimeWaterBasic - Water Basic Day Time

Agora, para ver o resultado final, coloca a câmera em uma boa posição. Para fazer isso, ajuste a janela Scene, quando estiver posicionado, selecione o objeto Main Camera. Agora vá para o menu GameObject e selecione Align With View. Isto irá colocar a câmera na posição que você quer. Aperte Play.

WaterBasic - Final ResultWaterBasic - Final ResultWaterBasic - Final Result

A partir daqui, você pode voltar e alterar as propriedades do prefab para ver as diferenças entre as propriedades. Brinque com Cast Shadows, Wave scale e Wave speed para ver as modificações.

Water Pro

O próximo passo é aprender como criar e configurar um lago usando Water Pro. Antes de continuarmos, exclua o objeto WaterBasicDaytime de sua cena.

Em seguida, na aba Project, abra a pasta Standard Assets abra Environment de novo. Desta vez, abra a pasta Water. Dentro há duas pastas: Water e Water4. Para utilizar o Water Pro, você deve abrir a pasta Water. Em seguida, abra a pasta Prefabs.

Water Pro - PrefabsWater Pro - PrefabsWater Pro - Prefabs

Assim como com Water Basic, você tem dois prefabs na pasta: WaterProDaytime e WaterProNightime. Ambos funcionam exatamente da mesma forma, WaterProDaytime para cenas durante o dia, e WaterProNightime para ambientes mais escuros.

Como a cena é diurna, você deve escolher WaterProDaytime. Selecione o prefab e arraste-o para a cena. Novamente, selecione o objeto de WaterProDaytime e ajuste a posição e a escala.

Quando o lago tiver um bom tamanho, você verá imediatamente as diferenças na qualidade gráfica da água em comparação com Water Basic.

Water Pro - AdjustmentsWater Pro - AdjustmentsWater Pro - Adjustments

Quando tiver posicionado a água, dê uma olhada no que você pode fazer. Se você selecioná-la e ir na guia Inspector, você verá vários componentes: um Transform, um Water Plane Mesh, um Mesh Renderer, um Water(Script), e um Shader.

Water Pro - InspectorWater Pro - InspectorWater Pro - Inspector

As propriedades do Mesh Renderer são semelhantes ao anterior. Em Cast Shadows e Receive Shadows deixe On. Em seguida, mude Reflection Probes para Blend Probes And Skybox.

O Script apresenta mais propriedades que podem ser modificadas. Estas propriedades não estão disponíveis para o tipo de água anterior.

Water Pro - ScriptingWater Pro - ScriptingWater Pro - Scripting

Você pode definir Water Mode para Simple, que fará com que a água funcione como a água básica; Reflective fará com que a água tenha reflexo mas nenhuma refração; Refractive permite tanto reflexão quanto refração. Você pode desabilitar o Disable Pixel Lights, que irá reduzir a qualidade da iluminação em reflexão/refração para ganhar desempenho.

Você pode ajustar o Texture Size, que se refere à resolução da textura da água. O Clip Plane Offset é a profundidade da água que a imagem aparece refletida ou refratada. Você pode configurar Reflect Layers e Refract Layers. Estas são as máscaras que controlam quais objetos da cena são visíveis na água. Por padrão, todas as camadas estão selecionadas.

No componente Shader, você pode mudar Wave Scale, e alterar os valores Reflection e Refraction Distort. Isto irá determinar a altura aparente das ondas em termos de seu efeito em objetos refletidos ou refratados.

Você também pode ajustar a propriedade Reflective color para controlar a tonalidade que será aplicada a objetos debaixo d'água.

Water Pro - Reflection controlsWater Pro - Reflection controlsWater Pro - Reflection controls

Se você der Play, verá seu Water Pro em ação. Esta é uma água muito mais realista do que o Water Basic; no entanto, em termos de poder computacional exigido, também é mais intenso.

Water Pro - Final ResultWater Pro - Final ResultWater Pro - Final Result

Water4

Para testar o Water4, você precisa excluir o lago que acabou de criar.

Na guia Project, abra Standard Assets > Environment. Abra a pasta Water e depois Water4. Em seguida, abra a pasta Prefabs. Aqui você encontra dois prefabs: Water4Simple e Water4Advanced.

Water4 - PrefabsWater4 - PrefabsWater4 - Prefabs

Se você selecionar os dois e compará-los, vai notar que eles têm os mesmos componentes e funcionam exatamente da mesma forma. Então, qual é a diferença entre os dois?

Bem, você pode ver isso, selecionando o material que eles usam. A versão avançada inclui texturas adicionais de margem e espuma. Estas texturas são aplicadas sobre a crista das ondas e, também, onde terrenos e outros objetos interrompem a malha da onda, como a costa.

Selecione o prefab Water4Advanced e arraste-o para a cena. A próxima coisa a fazer é ajustar a posição e a escala do plano de água.

Water4 - AdjustmentsWater4 - AdjustmentsWater4 - Adjustments

Observe que quando você adicionar um prefab, Unity criará automaticamente um objeto de reflexo na cena. Este objeto permite que você altere o reflexo da água em sua cena. O componente câmera no objeto de reflexo permite que o Water4 reflita sua cena.

Water4 - InspectorWater4 - InspectorWater4 - Inspector

Agora, se você selecionar o objeto Water4Advanced, você verá que há várias propriedades que você pode mudar.

Water4 - Inspector ScriptsWater4 - Inspector ScriptsWater4 - Inspector Scripts

O primeiro campo no componente Water Base (Script) permite que você defina um material para a água. Você também pode definir Water Quality como Low, Medium ou High. Se estiver habilitada a opção Edge Blend, Water4 misturará as bordas da malha da água.

O próximo componente é Specular Lighting. Este script ajusta a qualidade do reflexo da água. Como você pode ver, ele tem uma referência para o transform do objecto Specular. Você pode usar uma referência para indicar qualquer transform de uma fonte de luz. Isto pode ser, por exemplo, o transform da luz direcional.

Em seguida, você tem o componente Planar Reflection. Este é usado para reflexões planares em tempo real. Os reflexos são calculados em relação a altura da malha pai que tem este script anexado. Você pode definir vários parâmetros, como máscaras de reflexo, ligar ou desligar o reflexo do skybox, ou definir uma cor. Vamos deixá-los com os valores padrão.

Finalmente, você tem o componente Gerstner Displace, que permite que você controle a geração de onda.

Se você pressionar o botão Play, você pode ver o Water4 em ação, criando um lago no centro do terreno.

Water4 - Final ResultWater4 - Final ResultWater4 - Final Result

Conclusões

Isto conclui o tutorial sobre água no Unity. Você aprendeu sobre os três principais tipos de água: Water Basic e Pro Water4. Com esse conhecimento, você agora pode criar novos ambientes, ou modificar e melhorar os atuais, para o seu próximo jogo ou aplicativo.

Unidade tem uma economia ativa. Existem muitos outros produtos que ajudam você a construir o seu projeto. A natureza da plataforma também permite melhorar suas habilidades. Seja qual for o caso, você pode ver tudo o que temos disponível no mercado Envato.

Se você tiver mais perguntas ou comentários, como sempre, sinta-se livre para deixar na seção de comentários.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Game Development tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.