EffectService

이펙트 제어 기능을 제공합니다.

# Methods

[{"index":"integer PlayEffect(string animationClipRUID, Entity instigator, Vector3 position, float zRotation, Vector3 scale, boolean isLoop = false, Dictionary options = nil)","0":"현재 맵의 고정된 위치에 이펙트를 재생하고 이펙트를 제거하기 위한 일련 번호를 반환합니다. 이펙트 생성에 실패할 경우 0을 반환합니다. 사용 가능한 옵션은 FlipX, FlipY, SortingLayer, OrderInLayer, Alpha, StartFrameIndex, EndFrameIndex, PlayRate, SyncFlip, Color, MaterialID, IgnoreMapLayerCheck, LitMode가 있습니다."}]

[{"index":"integer PlayEffectAttached(string animationClipRUID, Entity parentEntity, Vector3 localPosition, float localZRotation, Vector3 localScale, boolean isLoop = false, Dictionary options = nil)","0":"parentEntity에 부착된 이펙트를 재생하고 이펙트를 제거하기 위한 일련 번호를 반환합니다. 이펙트 생성에 실패할 경우 0을 반환합니다. 사용 가능한 옵션은 FlipX, FlipY, SortingLayer, OrderInLayer, Alpha, StartFrameIndex, EndFrameIndex, PlayRate, SyncFlip, Color, MaterialID, IgnoreMapLayerCheck, LitMode가 있습니다."}]

[{"index":"void RemoveEffect(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

2단 점프와 스킬을 간단하게 만드는 예제입니다. 2단 점프는 공중에서 점프(Alt or Space)를 사용할 때 발동되도록 `InputService`의 이벤트를 사용합니다.  
Q키를 눌렀다가 떼는 순간 스킬을 사용하도록 만들기 위해 `RemoveEffect()`를 사용합니다.
    
    
    @Component
    script PlayerAbilityController extends Component
        property number EffectSerial = 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 = { ["FlipX"] = lookDirectionX > 0 }
        		local pos = self.Entity.TransformComponent.Position
    
        		_EffectService:PlayEffect("000000", self.Entity, pos, 0, Vector3.one, false, options)
        		_EffectService:PlayEffect("000000", self.Entity, pos, 0, Vector3.one, false, options)
        	end
        elseif key == KeyboardKey.Q then
        	self.EffectSerial = _EffectService:PlayEffectAttached("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
        	_EffectService:RemoveEffect(self.EffectSerial)
    
        	local pos = self.Entity.TransformComponent.Position
    
        	_EffectService:PlayEffect("000000", self.Entity, pos + Vector3(-4, 0, 0), 0, Vector3.one)
        	_EffectService:PlayEffect("000000", self.Entity, pos + Vector3(-2, 0, 0), 0, Vector3.one)
        	_EffectService:PlayEffect("000000", self.Entity, pos + Vector3(0, 0, 0), 0, Vector3.one)
        	_EffectService:PlayEffect("000000", self.Entity, pos + Vector3(2, 0, 0), 0, Vector3.one)
        	_EffectService:PlayEffect("000000", self.Entity, pos + Vector3(4, 0, 0), 0, Vector3.one)
    
        	_EffectService:PlayEffect("000000", self.Entity, pos, 0, Vector3.one)
        end
        end
    end
    

# SeeAlso

  * PlayerControllerComponent
  * RigidbodyComponent
  * TransformComponent
  * KeyboardKey
  * KeyDownEvent
  * KeyUpEvent
  * [스킬 이펙트를 뿌려보자!](/docs?postId=70)