KinematicbodyComponent

탑다운 방식의 상하좌우 이동, 점프 및 렉트 타일과의 충돌 기능을 제공합니다. 중력과 가·감속 영항을 받지 않습니다. 타일맵이 RectTile일 때 동작합니다.

# Properties

[{"index":"Vector2 Acceleration (Deprecated)","0":"더는 사용하지 않는 프로퍼티입니다. SpeedFactor 프로퍼티를 사용하세요."}]

[{"index":"boolean ApplyClimbableRotation (Sync)","0":"true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅니다. false인 경우 캐릭터는 사다리의 기울기, 회전에 영향을 받지 않습니다."}]

[{"index":"boolean EnableJump (Sync)","0":"점프 기능을 사용할지 여부를 나타냅니다."}]

[{"index":"boolean EnableShadow (Sync)","0":"그림자를 사용할지 여부를 나타냅니다."}]

[{"index":"boolean EnableTileCollision (Sync)","0":"RectTileMap과의 충돌 기능을 사용할지 여부를 설정합니다. 값이 false일 경우 충돌 타일과 충돌하지 않습니다. 또한 RectTileCollisionBeginEvent 및 RectTileCollisionEndEvent도 발생하지 않습니다."}]

[{"index":"float JumpDrag (Sync)","0":"점프 속력 감소량입니다. 값이 클수록 지면에 더 빨리 떨어집니다."}]

[{"index":"float JumpSpeed (Sync)","0":"점프 속력입니다. 값이 클수록 더 높이 점프합니다."}]

[{"index":"Vector2 MoveVelocity (HideFromInspector)","0":"이동 속도를 설정합니다. SpeedFactor를 곱한 값이 최종 속도가 됩니다.플레이어가 방향키를 이동하거나, MovementComponent:MoveToDirection() 함수를 호출했을 때 MoveVelocity 값이 변경됩니다."}]

[{"index":"Color ShadowColor (Sync)","0":"그림자 색상입니다."}]

[{"index":"Vector2 ShadowOffset (Sync)","0":"그림자 위치입니다."}]

[{"index":"float ShadowScalingRatio (Sync)","0":"그림자 크기 변화율입니다. 엔티티의 점프 높이에 따라 크기가 변화합니다."}]

[{"index":"Vector2 ShadowSize (Sync)","0":"그림자 크기입니다."}]

[{"index":"Vector2 SpeedFactor (Sync)","0":"이동할 때 X축, Y축 속력에 곱해지는 가중치입니다. 값이 클수록 이동 속력이 빨라집니다."}]

##### inherited from Component:

[{"index":"boolean Enable (Sync)","0":"컴포넌트 활성화 여부를 확인합니다."}]

[{"index":"boolean EnableInHierarchy (ReadOnly) (HideFromInspector)","0":"계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다."}]

[{"index":"Entity Entity (ReadOnly)","0":"이 컴포넌트를 소유한 엔티티입니다."}]

# Methods

[{"index":"Vector2 GetGroundPosition()","0":"로컬 좌표 기준으로 바닥 위치를 반환합니다."}]

[{"index":"Vector2 GetWorldGroundPosition()","0":"월드 좌표 기준으로 바닥 위치를 반환합니다."}]

[{"index":"boolean IsOnGround()","0":"현재 지면에 닿아 있는 상태인지 확인합니다. 점프 중일 때 false를 반환합니다."}]

[{"index":"void OnEnterRectTile(RectTileEnterEvent enterEvent) (ScriptOverridable)","0":"RectTileEnterEvent 발생 시 호출되는 함수입니다."}]

[{"index":"void OnLeaveRectTile(RectTileLeaveEvent leaveEvent) (ScriptOverridable)","0":"RectTileLeaveEvent 발생 시 호출되는 함수입니다."}]

[{"index":"void SetPosition(Vector2 position)","0":"로컬 좌표 기준으로 엔티티의 위치를 설정합니다."}]

[{"index":"void SetWorldPosition(Vector2 position)","0":"월드 좌표 기준으로 엔티티의 위치를 설정합니다."}]

##### inherited from Component:

[{"index":"boolean IsClient()","0":"현재 실행 환경이 클라이언트인지 아닌지의 여부를 반환합니다."}]

[{"index":"boolean IsServer()","0":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]

# Events

[{"index":"KinematicbodyJumpEvent","0":"점프 상태가 변경될 때 발생하는 이벤트입니다."}]

[{"index":"RectTileCollisionBeginEvent","0":"충돌 가능한 타일과 접촉했을 때 발생하는 이벤트입니다."}]

[{"index":"RectTileCollisionEndEvent","0":"충돌한 타일에서 벗어날 때 발생하는 이벤트입니다."}]

[{"index":"RectTileEnterEvent","0":"특정 사각형 타일에 진입했을 때 발생하는 이벤트입니다."}]

[{"index":"RectTileLeaveEvent","0":"특정 사각형 타일에서 벗어났을 때 발생하는 이벤트입니다."}]

# Examples

점프로 타일을 뛰어 넘는 예제입니다.
    
    
    @Component
    script PlatformCollisionController extends Component
        @ExecSpace("ClientOnly")
        method void OnUpdate()
        if _UserService.LocalPlayer ~= self.Entity then
        	return
        end
    
        local kinematicbody = self.Entity.KinematicbodyComponent
    
        local isOnGround = kinematicbody:IsOnGround()
        kinematicbody.EnableTileCollision = isOnGround
        end
    end
    

# SeeAlso

  * KinematicbodyJumpEvent
  * UserService
  * [RectTileMap에서 캐릭터 이동 제어](/docs?postId=748)