CameraService

카메라 관련 기능을 제공합니다.

# Properties

[{"index":"float currentZoomRatio (ReadOnly)","0":"현재 줌 비율입니다."}]

[{"index":"float TransitionBlendTime","0":"카메라 전환 시 블렌드 시간이 얼마나 걸릴지를 정의합니다."}]

[{"index":"CameraBlendType TransitionBlendType","0":"카메라 전환 시의 애니메이션 블랜드 타입을 정의합니다."}]

# Methods

[{"index":"CameraComponent GetCurrentCameraComponent() (ClientOnly)","0":"현재 적용 중인 CameraComponent를 반환합니다."}]

[{"index":"void SwitchCameraTo(CameraComponent cameraToSwitch) (Client)","0":"대상 CameraComponent로 카메라를 전환합니다."}]

[{"index":"void SwitchCameraTo(CameraComponent cameraToSwitch, Entity messageOwnerEntity = nil) (Client)","0":"대상 CameraComponent로 카메라를 전환합니다."}]

[{"index":"void SwitchCameraTo(CameraComponent cameraToSwitch, string targetUserId = nil) (Client)","0":"대상 CameraComponent로 카메라를 전환합니다."}]

[{"index":"void ZoomReset() (Client)","0":"카메라 줌을 초기화합니다."}]

[{"index":"void ZoomReset(Entity messageOwnerEntity = nil) (Client)","0":"카메라 줌을 초기화합니다."}]

[{"index":"void ZoomReset(string targetUserId = nil) (Client)","0":"카메라 줌을 초기화합니다."}]

[{"index":"void ZoomTo(float percent, float duration) (Client)","0":"현재 카메라의 줌을 duration 시간동안 percent 비율까지 확대\/축소합니다. percent는 현재 카메라의 ZoomRatioMin 이상, ZoomRatioMax 이하의 값만 사용할 수 있으며 단위는 백분율입니다. duration은 초 단위입니다."}]

[{"index":"void ZoomTo(float percent, float duration, Entity messageOwnerEntity = nil) (Client)","0":"현재 카메라의 줌을 duration 시간동안 percent 비율까지 확대\/축소합니다. percent는 현재 카메라의 ZoomRatioMin 이상, ZoomRatioMax 이하의 값만 사용할 수 있으며 단위는 백분율입니다. duration은 초 단위입니다."}]

[{"index":"void ZoomTo(float percent, float duration, string targetUserId = nil) (Client)","0":"현재 카메라의 줌을 duration 시간동안 percent 비율까지 확대\/축소합니다. percent는 현재 카메라의 ZoomRatioMin 이상, ZoomRatioMax 이하의 값만 사용할 수 있으며 단위는 백분율입니다. duration은 초 단위입니다."}]

##### 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":"이벤트를 발생시킵니다."}]

# Events

[{"index":"CameraSwitchEvent","0":"카메라가 비추는 대상이 전환될 때 발생하는 이벤트입니다."}]

[{"index":"CameraZoomEndEvent","0":"카메라의 줌 변경이 완료된 후 발생하는 이벤트입니다."}]

# Examples

`LeftShift` 키를 누르고 있는 동안 카메라가 `Target Entity`를 2배 확대해 가까이에서 보이도록 만드는 예제입니다.
    
    
    @Component
    script FocusViewSwitcher extends Component
        @EventSender("Service", "InputService")
        handler HandleKeyDownEvent(KeyDownEvent event)
        -- Parameters
        local key = event.key
        --------------------------------------------------------
    
        if key == KeyboardKey.LeftShift then
        	local targetEntity = _EntityService:GetEntityByPath(EntityPath)
        	local targetCamera = targetEntity.CameraComponent
    
        	_CameraService:SwitchCameraTo(targetCamera)
        	_CameraService:ZoomTo(200, 1.0)
        end
        end
    
        @EventSender("Service", "InputService")
        handler HandleKeyUpEvent(KeyUpEvent event)
        -- Parameters
        local key = event.key
        -------------------------------------------------------- 
        if key == KeyboardKey.LeftShift then
        	local targetCamera = _UserService.LocalPlayer.CameraComponent
    
        	_CameraService:ZoomReset()
        	_CameraService:SwitchCameraTo(targetCamera)
        end
        end
    end
    

# SeeAlso

  * CameraComponent
  * KeyboardKey
  * KeyDownEvent
  * KeyUpEvent
  * EntityService
  * InputService
  * UserService
  * [플레이어 카메라 제어](/docs?postId=72)
  * [CameraService를 활용한 카메라 제어](/docs?postId=118)