블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2318)N
Unity3D (567)N
Programming (471)
Unreal (4)
Gamebryo (56)
Tip & Tech (183)
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (7)
Total1,339,007
Today20
Yesterday214
Statistics Graph

달력

« » 2019.11
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

공지사항

태그목록

파티클 이펙트를 런타임 중에 방향을 반전 시키는 간단한 스크립트.


생성 될 때 방향을 반전시키기 위해서 ParticleSystem.startSpeed 를 반전 시키고,

이미 생성 된 파티클은 ParticleSystem.Particle.velocity 를 반전 시켜 줌.



using UnityEngine;
using System.Collections;

public class InvertParticleEffect : MonoBehaviour
{
    ParticleSystem m_System;
    ParticleSystem.Particle[] m_Particles;


    void InitializeIfNeeded()
    {
        if (m_System == null)
            m_System = GetComponent();

        if (m_Particles == null || m_Particles.Length < m_System.maxParticles)
            m_Particles = new ParticleSystem.Particle[m_System.maxParticles];
    }

    public void Invert()
    {
        InitializeIfNeeded();

        // 생성될 때, 파티클 Speed 방향 반전
        var vel = m_System.startSpeed *= -1f;

        // GetParticles is allocation free because we reuse the m_Particles buffer between updates
        int numParticlesAlive = m_System.GetParticles(m_Particles);

        // Change only the particles that are alive
        for (int i = 0; i < numParticlesAlive; i++)
        {
            // 이미 생성된 파티클은 velocity 반전해서 반대로 가도록..
            m_Particles[i].velocity *= -1f;
        }

        // Apply the particle changes to the particle system
        m_System.SetParticles(m_Particles, numParticlesAlive);
    }

}

[참조] https://docs.unity3d.com/ScriptReference/ParticleSystem.GetParticles.html


Posted by blueasa

댓글을 달아 주세요