ParticleService

파티클을 소환하는 기능을 제공합니다.

# Methods

[{"index":"integer PlayAreaParticle(AreaParticleType particleType, Vector2 areaSize, Entity instigator, Vector3 position, float zRotation, Vector3 scale, boolean isLoop = false, Dictionary options = nil)","0":"현재 맵의 고정된 위치에 AreaParticle을 재생하고 이펙트를 제거하기 위한 일련번호를 반환합니다. areaSize 값으로 생성 범위를 지정합니다. 생성 실패 시 0을 반환합니다."}]

[{"index":"integer PlayAreaParticleAttached(AreaParticleType particleType, Vector2 areaSize, Entity parentEntity, Vector3 localPosition, float localZRotation, Vector3 localScale, boolean isLoop = false, Dictionary options = nil)","0":"parentEntity에 부착된 AreaParticle을 재생하고 파티클를 제거하기 위한 일련번호를 반환합니다. areaSize 값으로 생성 범위를 지정합니다. 생성 실패 시 0을 반환합니다."}]

[{"index":"integer PlayBasicParticle(BasicParticleType particleType, Entity instigator, Vector3 position, float zRotation, Vector3 scale, boolean isLoop = false, Dictionary options = nil)","0":"현재 맵의 고정된 위치에 BasicParticle을 재생하고 이펙트를 제거하기 위한 일련번호를 반환합니다. 생성 실패 시 0을 반환합니다."}]

[{"index":"integer PlayBasicParticleAttached(BasicParticleType particleType, Entity parentEntity, Vector3 localPosition, float localZRotation, Vector3 localScale, boolean isLoop = false, Dictionary options = nil)","0":"parentEntity에 부착된 BasicParticle을 재생하고 파티클를 제거하기 위한 일련번호를 반환합니다. 생성 실패 시 0을 반환합니다."}]

[{"index":"integer PlaySpriteParticle(SpriteParticleType particleType, string spriteRUID, Entity instigator, Vector3 position, float zRotation, Vector3 scale, boolean isLoop = false, Dictionary options = nil)","0":"현재 맵의 고정된 위치에 SpriteParticle을 재생하고 이펙트를 제거하기 위한 일련번호를 반환합니다. spriteRUID 값으로 파티클의 스프라이트를 지정합니다. 생성 실패 시 0을 반환합니다."}]

[{"index":"integer PlaySpriteParticleAttached(SpriteParticleType particleType, string spriteRUID, Entity parentEntity, Vector3 localPosition, float localZRotation, Vector3 localScale, boolean isLoop = false, Dictionary options = nil)","0":"parentEntity에 부착된 SpriteParticle을 재생하고 파티클를 제거하기 위한 일련번호를 반환합니다. spriteRUID 값으로 파티클의 스프라이트를 지정합니다. 생성 실패 시 0을 반환합니다."}]

[{"index":"void RemoveParticle(integer serial)","0":"파티클 재생 시 얻은 일련번호로 해당 이펙트를 제거합니다."}]

##### inherited from Service:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 이벤트 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]

# Examples

플레이어의 더블 점프 및 스킬 이펙트 효과를 파티클로 구현하는 예제입니다.
    
    
    @Component
    script PlayerAbilityHandler extends Component
        property number ParticleSerial = 0
    
        @EventSender("Service", "InputService")
        handler HandleKeyDownEvent(KeyDownEvent event)
        -- Parameters
        local key = event.key
        --------------------------------------------------------
        if key == KeyboardKey.Space or key == KeyboardKey.LeftAlt then
        	if not self.Entity.RigidbodyComponent:IsOnGround() then
        	local lookDirectionX = self.Entity.PlayerControllerComponent.LookDirectionX
        	self.Entity.RigidbodyComponent:SetForce(Vector2(lookDirectionX * 5, 3))
    
        	local options = {
        		["SortingLayer"] = self.Entity.AvatarRendererComponent.SortingLayer,
        		["Color"] = Color(0.25,0.5,0.5,0.8)
        	}
        	local pos = self.Entity.TransformComponent.Position
    
        	_ParticleService:PlayBasicParticle(BasicParticleType.PillarBurst, self.Entity, pos, 90 * lookDirectionX, Vector3.one, false, options)
        	end
        elseif key == KeyboardKey.Q then
        	self.ParticleSerial = _ParticleService:PlaySpriteParticleAttached(SpriteParticleType.StreamSharp, "000000", self.Entity, Vector3.zero, 0, Vector3.one, true)
        end
        end
    
        @EventSender("Service", "InputService")
        handler HandleKeyUpEvent(KeyUpEvent event)
        -- Parameters
        local key = event.key
        --------------------------------------------------------
        if key == KeyboardKey.Q then
        	_ParticleService:RemoveParticle(self.ParticleSerial)
    
        	local pos = self.Entity.TransformComponent.Position
        	local options = {
        		["SortingLayer"] = self.Entity.AvatarRendererComponent.SortingLayer,
        		["Color"] = Color(0.25,0.5,0.5,0.8),
        		["ParticleSize"] = 3,
        		["ParticleCount"] = 2
        	}
    
        	_ParticleService:PlaySpriteParticle(SpriteParticleType.BurstNova, "000000", self.Entity, pos, 0, Vector3.one, false, options)
        end
        end
    end
    

# SeeAlso

  * AreaParticleComponent
  * AvatarRendererComponent
  * BaseParticleComponent
  * BasicParticleComponent
  * PlayerControllerComponent
  * RigidbodyComponent
  * SpriteParticleComponent
  * TransformComponent
  * KeyboardKey
  * KeyDownEvent
  * Color
  * Vector2
  * Vector3
  * InputService
  * [파티클 사용하기](/docs?postId=1036)
  * [파티클 활용하기](/docs?postId=764)