Hur man målar med partikelsystem i Unity

Unity Engine, känd för sin mångsidiga och dynamiska verktygsuppsättning, erbjuder otaliga sätt att skapa uppslukande upplevelser. Bland dessa framstår Partikelsystemet som ett mångsidigt verktyg för visuella effekter, från att simulera regn och rök till att skapa invecklade animationer. En mindre utforskad användning av detta system är att måla i en Unity scen. Denna handledning introducerar en innovativ tillämpning av partikelsystemet för att simulera verkan av målning på ytor i Unity.

Förutsättningar

1. Ställa in scenen

  • Starta Unity och skapa ett nytt 3D-projekt (om du inte har gjort det ännu)
  • Inuti hierarkifönstret, högerklicka och välj 3D-objekt -> 'Plane'. Detta kommer att fungera som duken.
  • Justera planets position till (0, 0, 0) för konsekvens.

2. Skapar partikelsystemet

  • Högerklicka i hierarkifönstret och välj 'Effects' -> 'Particle System'.
  • Byt namn på partikelsystemet till "ParticlePainter".
  • Placera objektet "ParticlePainter" något ovanför planet.

3. Konfigurera partikelsystem för målning

  • Med "ParticlePainter"-objektet markerat, navigera till inspektörsfönstret.

Under 'Particle System' gör du följande ändringar:

  • 'Duration': 1
  • 'Start Lifetime': 'Infinity' (detta säkerställer att partiklar inte dör)
  • 'Start Speed': 0 (partiklar ska inte röra sig)
  • 'Emission' -> 'Rate over Time': 100 (justera enligt önskemål om målningstäthet)
  • Gå till 'Shape' och välj "Circle". Justera radien till ett mindre värde för att kontrollera penselstorleken.
  • Under 'Renderer' ändrar du materialet till ett anpassat material eller färg för att representera färgen.

4. Manus till Paint Mechanic

Nu kommer ett skript att läggas till för att styra när och var partiklarna emitteras.

  • Högerklicka i tillgångsfönstret, välj 'Create' -> 'C# Script' och döp det till "ParticlePainterScript".
  • Dubbelklicka på skriptet för att öppna det i en redigerare, klistra in koden nedan i det och spara sedan skriptet:
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;
        }
    }
}
  • Bifoga "ParticlePainterScript" till "ParticlePainter"-objektet i Unity-redigeraren.

5. Justering av kamera

Justera huvudkameran för en vy uppifrån:

  • Ställ in Position på (0, 10, 0) och Rotation till (90, 0, 0).

6. Testa scenen

  • Klicka på knappen Spela.
  • Håll ner vänster musknapp och flytta markören över planet. Partiklar bör släppas ut, vilket skapar en färgliknande effekt.

Frågor:

  1. Varför använda partikelsystemet för målning istället för traditionella texturmålningsmetoder?: Partikelsystemet erbjuder dynamisk feedback i realtid, är mycket anpassningsbart och kan ge unika visuella effekter. Dessutom kan det vara mer prestandavänligt i vissa situationer, särskilt för tillfälliga färgeffekter.
  2. Kan flera färger målas med den här metoden?: Ja, genom att skapa flera partikelsystem eller justera partikelfärgen över tid kan olika färgeffekter uppnås.
  3. Hur kan borststorleken ändras dynamiskt?: Genom att justera 'radius'-värdet för partikelsystemets form i realtid genom skript, kan borststorleken varieras dynamiskt.

Slutsats

När denna handledning är över har en ny och unik tillämpning av Unity partikelsystemet utforskats. Oavsett om det gäller spelmekanik, konstnärliga verktyg eller innovativa upplevelser, fortsätter Unity att överraska med sina mångsidiga möjligheter.

Föreslagna artiklar
Hur man skapar ett skräckspel i Unity
Hur man lägger till zombies till Unity-spel
Kraften med platshållartexturer för prototyper i Unity
Hur man gör lätta kakor i Unity
Hur man gör PS1-liknande retrografik i Unity
Implementera partikeleffekter i enhet
Arbeta med Unitys UI-system