본문 바로가기
유니티 엔진

Particle Control 파티클 컨트롤

by 대마왕J 2017. 7. 2.

흐음 파티클을 이렇게 컨트롤 할 수 있었군요


https://youtu.be/KsT_ZyTv1ms


컨트롤은 이쪽 영상 따라 했습니다 

원기님이 가르쳐 주셨어요!! 



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class ParticleSeek2 : MonoBehaviour {


    public Transform target;

    public float force = 10.0f;


    ParticleSystem ps;



// Use this for initialization

void Start () {

        ps = GetComponent<ParticleSystem>();

}

// Update is called once per frame

void LateUpdate () {

        //파티클을 하나하나 배열에 넣는다. 배열 이름은 particles

        ParticleSystem.Particle[] particles = 

            new ParticleSystem.Particle[ps.particleCount];


        //파티클 하나하나 받아다가 파티클 시스템에 넣는다 .

        ps.GetParticles(particles);


        for (int i = 0; i< particles.Length; i++)

        {

            ParticleSystem.Particle p = particles[i];


            //만약 파티클이 월드에서 시뮬레이션 되지 않을때 월드로 바꿔준다 

            Vector3 particleWorldPosition;

            if(ps.main.simulationSpace == ParticleSystemSimulationSpace.Local)

            {

                particleWorldPosition = transform.TransformPoint(p.position);

            }

            else if (ps.main.simulationSpace == ParticleSystemSimulationSpace.Custom)

            {

                particleWorldPosition = ps.main.customSimulationSpace.TransformPoint(p.position);

            }

            else

            {

                particleWorldPosition = p.position;

            }


            Vector3 directionToTarget = (target.position - particleWorldPosition).normalized;

            Vector3 seekForce = (directionToTarget * force) * Time.deltaTime;


            p.velocity += seekForce;

            particles[i] = p;

        }



        // 셋 파티클로 파티클에 적용

        ps.SetParticles(particles, particles.Length);

}

}



반응형

댓글