07
25

main

main 프로퍼티는 파티클 시스템의 기본 동작과 관련된 다양한 설정 및 속성을 포함하는 구조체인 ParticleSystem.MainModule에 액세스하는 데 사용된다.
  • 아래는 메인 모듈에 의해 노출되는 공통 속성 중 일부이다.
    1. Duration: Specifies the duration of the particle system, determining how long it emits particles before stopping. .파티클이 방출되는 길이를 의미하며, 파티클이 무한반복이라면 한 사이클의 길이를 의미한다.
    2. Looping: Determines whether the particle system loops its emission or plays only once.
    3. Start Lifetime: Defines the initial lifetime of particles when they are emitted. 수명이 0초가 되면 파티클이 없어지는 것이다.
    4. Start Speed: Sets the initial speed of particles when they are emitted.
    5. Start Size: Controls the initial size of particles.
    6. Start Color: Defines the initial color of particles.
    7. Gravity Modifier: Adjusts the effect of gravity on particles.
    8. Simulation Space: Specifies whether the particle system simulates particles in local or world space.
파티클시스템은 기본적으로 Predictable pattern(Procedural Mode)이다.
따라서 퍼포먼스가 괜찮게 나오며, 카메라가 파티클을 벗어나면 culled 된다.
하지만 Simulation Space를 world space로 바꾸게 되면
Unpredictable pattern(non-Procedural Mode)으로 바뀌게 되어 퍼포먼스가 낮아진다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static UnityEngine.ParticleSystem;

public class ParticleController : MonoBehaviour
{
    public ParticleSystem ps;


    private void Awake()
    {
        ps = GetComponent<ParticleSystem>();
    }
    void Start()
    {
        // Access the main module using the main property.
        MainModule mainModule = ps.main;

        // Modify the properties of the main module.
        mainModule.startSize = new ParticleSystem.MinMaxCurve(1.0f, 2.0f);
        mainModule.startColor = Color.blue;

        // 파티클 시스템을 중지하고 모든 파티클을 삭제
        // 파티클 시스템이 재생 중인 동안은 duration 속성을 변경할 수 없다.
        // 따라서 파티클 시스템이 모든 파티클을 완전히 정리하고 재생을 중지한 후에야 duration 속성을 설정할 수 있다.
        ps.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
        mainModule.duration = 10;
        ps.Play();
    }
}

emission

파티클 시스템의 생성 속도와 방향을 제어한다.

Rate over time: 초당 파티클의 방출 갯수
using UnityEngine;

public class ParticleController : MonoBehaviour
{
    public ParticleSystem particleSystem;

    void Start()
    {
        ParticleSystem.EmissionModule emissionModule = particleSystem.emission;

        // 생성 속도를 100 particles per second로 설정
        emissionModule.rateOverTime = 100f;

        // 생성 방향을 정면으로 설정
        emissionModule.SetBurst(0, new ParticleSystem.Burst(0f, 1));
    }
}

shape

파티클의 생성 위치와 형태를 지정한다.
using UnityEngine;

public class ParticleController : MonoBehaviour
{
    public ParticleSystem particleSystem;

    void Start()
    {
        ParticleSystem.ShapeModule shapeModule = particleSystem.shape;

        // 생성 위치를 원 형태로 설정
        shapeModule.shapeType = ParticleSystemShapeType.Circle;

        // 원의 반지름 설정
        shapeModule.radius = 5f;
    }
}

velocityOverLifetime

파티클의 이동 방향과 속도를 지정한다
using UnityEngine;

public class ParticleController : MonoBehaviour
{
    public ParticleSystem particleSystem;

    void Start()
    {
        ParticleSystem.VelocityOverLifetimeModule velocityModule = particleSystem.velocityOverLifetime;

        // 파티클이 y축 방향으로 위로 이동하도록 설정
        velocityModule.y = new ParticleSystem.MinMaxCurve(5f, 10f);
    }
}

Force over Lifetime

파티클의 수명 동안 어디로 향하게 할지 결정할 수 있는 모듈

Texture Sheet Animation

텍스처 시트(texture sheet)를 사용하여 여러 프레임의 이미지를
하나의 텍스처에 패킹(pack)하여 애니메이션을 구현하는 방법

텍스처 시트 (Texture Sheet)
: 여러 개의 이미지 프레임을 하나의 이미지 파일에 배열 형태로 포함시킨 것,
  이렇게 하면 여러 프레임을 단일 텍스처로 관리할 수 있다.

Texture Sheet Animation
: 파티클 시스템에서 사용되며, 단일 텍스처에서 여러 프레임을 차례로 표시함으로써 애니메이션을 만든다.
  이는 간단한 애니메이션을 표현할 때 유용하다.

예를 들어, 불꽃 파티클 시스템을 만든다고 치면,
불꽃의 화염이 번쩍이는 효과를 주기 위해서는 여러 프레임의 화염 이미지가 필요하다.
이러한 여러 이미지를 하나의 텍스처 시트로 합친 후,
파티클 시스템에서 Texture Sheet Animation을 사용하면 불꽃이 번쩍이는 효과를 구현할 수 있다.

Noise 모듈의 Strength

Noise 모듈의 "strength(강도)"를 올리면 파티클의 움직임에 잡음(Noise)이 더 강하게 영향을 미친다.

이는 파티클의 움직임에 무작위성을 추가하여 자연스러운 효과를 줄 수 있다.

움직임의 불규칙성 증가: Strength를 높이면 파티클의 이동 경로에 더 많은 랜덤성이 추가된다.

비틀림 효과: 잡음 강도가 높아질수록 파티클의 움직임이 비틀려 보일 수 있다.
이는 화염, 연기 등의 자연 현상을 모방할 때 효과적이다.

파티클의 속도 조절: Strength를 조절하여 파티클의 움직임을 더 느리거나 빠르게 만들 수 있다.

자연스러운 흔들림 효과: 강도를 높이면 파티클이 자연스럽게 흔들리는 효과를 얻을 수 있다.
이는 바람이나 물결과 같은 효과를 구현할 때 유용하다.

Color over Lifetime

시간에 따른 색깔변화(그라데이션)을 조정할 수 있는 모듈이다.

Color를 누르면 나오는 창에서 색을 지정할 수 있는데, 가장 좌측이 start color, 우측이 사라지기 직전의 color이다.

인스펙터뷰에서 보이는

파티클 시스템 컴포넌트의 각 프로퍼티에 대해 알고 싶으면

아래 연잎님의 블로그에 자세히 나와있으니 참고해도 좋겠습니다.
연잎의develog

COMMENT