Como pintar com sistema de partículas no Unity

Unity O Engine, conhecido por seu conjunto de ferramentas diversificado e dinâmico, oferece inúmeras maneiras de criar experiências imersivas. Entre eles, o Sistema de Partículas se destaca como uma ferramenta versátil para efeitos visuais, desde simular chuva e fumaça até criar animações complexas. Um uso menos explorado deste sistema é pintar dentro de uma cena Unity. Este tutorial apresenta uma aplicação inovadora do Sistema de Partículas para simular a ação de pintura em superfícies em Unity.

Pré-requisitos

1. Configurando a cena

  • Inicie Unity e crie um novo projeto 3D (se ainda não o fez)
  • Dentro da janela Hierarquia, clique com o botão direito e selecione Objeto 3D -> 'Plane'. Isso funcionará como tela.
  • Ajuste a posição do avião para (0, 0, 0) para consistência.

2. Criando o Sistema de Partículas

  • Clique com o botão direito na janela Hierarquia e selecione 'Effects' -> 'Particle System'.
  • Renomeie o sistema de partículas para "ParticlePainter".
  • Posicione o objeto "ParticlePainter" ligeiramente acima do plano.

3. Configurando Sistema de Partículas para Pintura

  • Com o objeto "ParticlePainter" selecionado, navegue até a janela do Inspetor.

Em 'Particle System', faça as seguintes alterações:

  • 'Duration': 1
  • 'Start Lifetime': 'Infinity' (isso garante que as partículas não morram)
  • 'Start Speed': 0 (as partículas não devem se mover)
  • 'Emission' -> 'Rate over Time': 100 (ajuste de acordo com a preferência de densidade de pintura)
  • Vá para 'Shape' e selecione "Circle". Ajuste o raio para um valor menor para controlar o tamanho do pincel.
  • Em 'Renderer', altere o Material para um material ou cor personalizada para representar a pintura.

4. Script do Paint Mechanic

Agora, um script será adicionado para controlar quando e onde as partículas serão emitidas.

  • Clique com o botão direito na janela Ativos, selecione 'Create' -> 'C# Script' e nomeie-o como "ParticlePainterScript".
  • Clique duas vezes no script para abri-lo em um editor, cole o código abaixo dentro dele e salve o script:
using UnityEngine;

public class ParticlePainterScript : MonoBehaviour
{
    private ParticleSystem painterParticles;
    private bool canPaint = false;

    void Start()
    {
        painterParticles = GetComponent<ParticleSystem>();
    }

    void Update()
    {
        PaintMechanic();
    }

    void PaintMechanic()
    {
        if (Input.GetMouseButton(0))
        {
            if (!canPaint) 
            {
                painterParticles.Play();
                canPaint = true;
            }
        }
        else
        {
            painterParticles.Stop();
            canPaint = false;
        }

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        
        if (Physics.Raycast(ray, out hit))
        {
            transform.position = hit.point;
        }
    }
}
  • Anexe o "ParticlePainterScript" ao objeto "ParticlePainter" no editor Unity.

5. Ajustando a câmera

Ajuste a câmera principal para uma visão de cima para baixo:

  • Defina a Posição como (0, 10, 0) e Rotação como (90, 0, 0).

6. Teste a cena

  • Clique no botão Reproduzir.
  • Mantenha pressionado o botão esquerdo do mouse e mova o cursor sobre o plano. Devem ser emitidas partículas, criando um efeito de tinta.

Perguntas e Respostas:

  1. Por que usar o Particle System para pintura em vez dos métodos tradicionais de pintura de textura?: O Particle System oferece feedback dinâmico em tempo real, é altamente personalizável e pode fornecer efeitos visuais exclusivos. Além disso, pode ser mais favorável ao desempenho em algumas situações, especialmente para efeitos de pintura temporários.
  2. Várias cores podem ser pintadas com este método?: Sim, criando vários sistemas de partículas ou ajustando a cor das partículas ao longo do tempo, vários efeitos de cores podem ser obtidos.
  3. Como o tamanho do pincel pode ser alterado dinamicamente?: Ao ajustar o valor 'radius' da forma do sistema de partículas em tempo real por meio de script, o tamanho do pincel pode ser variado dinamicamente.

Conclusão

Ao final deste tutorial, uma aplicação nova e exclusiva do Unity Sistema de Partículas foi explorada. Seja pela mecânica de jogo, ferramentas artísticas ou experiências inovadoras, Unity continua a surpreender com as suas capacidades versáteis.