Hvordan man maler med partikelsystem i enhed

Unity Engine, der er kendt for sit mangfoldige og dynamiske værktøjssæt, tilbyder utallige måder at skabe fordybende oplevelser på. Blandt disse skiller Partikelsystemet sig ud som et alsidigt værktøj til visuelle effekter, fra simulering af regn og røg til at lave indviklede animationer. En mindre udforsket anvendelse af dette system er at male i en Unity scene. Denne tutorial introducerer en innovativ anvendelse af partikelsystemet til at simulere virkningen af ​​maling på overflader i Unity.

Forudsætninger

1. Opsætning af scenen

  • Start Unity og opret et nyt 3D-projekt (hvis ikke endnu)
  • Inde i hierarkivinduet skal du højreklikke og vælge 3D-objekt -> 'Plane'. Dette vil fungere som lærredet.
  • Juster flyets position til (0, 0, 0) for konsistens.

2. Oprettelse af partikelsystemet

  • Højreklik i hierarkivinduet og vælg 'Effects' -> 'Particle System'.
  • Omdøb partikelsystemet til "ParticlePainter".
  • Placer "ParticlePainter" objektet lidt over planet.

3. Konfiguration af partikelsystem til maling

  • Med "ParticlePainter"-objektet valgt, naviger til Inspector-vinduet.

Foretag følgende ændringer under 'Particle System':

  • 'Duration': 1
  • 'Start Lifetime': 'Infinity' (dette sikrer, at partikler ikke dør)
  • 'Start Speed': 0 (partikler bør ikke bevæge sig)
  • 'Emission' -> 'Rate over Time': 100 (juster i henhold til præference for malingstæthed)
  • Gå til 'Shape' og vælg "Circle". Juster radius til en mindre værdi for at kontrollere børstestørrelsen.
  • Under 'Renderer' skal du ændre materialet til et brugerdefineret materiale eller farve for at repræsentere malingen.

4. Scripting af malermekanikeren

Nu vil et script blive tilføjet for at kontrollere, hvornår og hvor partiklerne udsendes.

  • Højreklik i vinduet Aktiver, vælg 'Create' -> 'C# Script', og navngiv det "ParticlePainterScript".
  • Dobbeltklik på scriptet for at åbne det i en editor, indsæt koden nedenfor i det, og gem derefter scriptet:
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;
        }
    }
}
  • Vedhæft "ParticlePainterScript" til "ParticlePainter"-objektet i Unity-editoren.

5. Justering af kamera

Juster hovedkameraet for en top-down visning:

  • Indstil positionen til (0, 10, 0) og rotation til (90, 0, 0).

6. Test scenen

  • Klik på knappen Play.
  • Hold venstre museknap nede, og flyt markøren over flyet. Partikler bør udsendes, hvilket skaber en malingslignende effekt.

Spørgsmål og svar:

  1. Hvorfor bruge partikelsystemet til at male i stedet for traditionelle teksturmalingsmetoder?: Partikelsystemet tilbyder dynamisk realtidsfeedback, er meget tilpasselig og kan give unikke visuelle effekter. Derudover kan det være mere præstationsvenligt i nogle situationer, især for midlertidige malingseffekter.
  2. Kan flere farver males med denne metode?: Ja, ved at skabe flere partikelsystemer eller justere partikelfarven over tid, kan der opnås forskellige farveeffekter.
  3. Hvordan kan børstestørrelsen ændres dynamisk?: Ved at justere 'radius'-værdien af ​​partikelsystemets form i realtid gennem scripting, kan børstestørrelsen varieres dynamisk.

Konklusion

Med denne øvelses afslutning er en ny og unik anvendelse af Unity partikelsystemet blevet udforsket. Uanset om det drejer sig om spilmekanik, kunstneriske værktøjer eller innovative oplevelser, fortsætter Unity med at overraske med sine alsidige muligheder.