SideviewbodyComponent

횡스크롤 방식의 이동 및 점프, 렉트 타일과의 충돌 기능을 제공합니다. 중력의 영향을 받으며, 가·감속 영향은 받지 않습니다. 현재 타일맵 모드가 SideViewRectTileMap일 때 동작합니다.

# Properties

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

[{"index":"float DownJumpSpeed (Sync)","0":"아래 점프 시 위로 튀어 오르는 속력을 조절합니다. 값이 클수록 더 높게 점프합니다."}]

[{"index":"boolean EnableDownJump (Sync)","0":"아래 점프 기능을 키거나 끕니다."}]

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

[{"index":"float JumpSpeed (Sync)","0":"점프 시 튀어 오르는 속력을 조절합니다. 값이 클수록 더 높게 점프합니다."}]

[{"index":"Vector2 MoveVelocity (HideFromInspector)","0":"이동 속도를 설정합니다. MovementComponent가 이동 제어를 위해 사용합니다."}]

##### 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":"RectTileInfo GetUnderfootTile()","0":"현재 밟고 있는 타일 정보를 확인하고, 밟은 타일이 없을 경우 nil을 반환합니다. 수평으로 나란히 배치된 두 타일의 경계 위에 있는 경우 왼쪽 타일을 반환합니다."}]

[{"index":"boolean IsOnGround()","0":"현재 지면에 닿아 있는 상태인지 아닌지 확인합니다."}]

[{"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":"RectTileCollisionBeginEvent","0":"충돌 가능한 타일과 접촉했을 때 발생하는 이벤트입니다."}]

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

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

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

# Examples

#### GetWallTile

측면에 닿은 벽 타일을 감지하는 예제입니다.
    
    
    @Component
    script WallTileTracker extends Component
        property table WallTile = {}
    
        @ExecSpace("ClientOnly")
        method table GetWallTile()
        return self.WallTile
        end
    
        @ExecSpace("ClientOnly")
        @EventSender("Self")
        handler HandleRectTileCollisionBeginEvent(RectTileCollisionBeginEvent event)
        ----------------- Native Emitter Info ------------------
        -- Emitter: KinematicbodyComponent
        -- Space: Server, Client
        --------------------------------------------------------
        -- Emitter: SideviewbodyComponent
        -- Space: Server, Client
        --------------------------------------------------------
    
        -- Parameters
        local Entity = event.Entity
        local Normal = event.Normal
        local Point = event.Point
        local TileInfo = event.TileInfo
        local TileMap = event.TileMap
        local TilePosition = event.TilePosition
        --------------------------------------------------------
    
        if Normal == Vector2.left or Normal == Vector2.right then
        	self.WallTile ={
        		info = TileInfo,
        		position = TilePosition:Clone(),
        		normal = Normal:Clone(),
        		tilemap = TileMap
        	}
        end 
        end
    
        @EventSender("Self")
        handler HandleRectTileCollisionEndEvent(RectTileCollisionEndEvent event)
        ----------------- Native Emitter Info ------------------
        -- Emitter: KinematicbodyComponent
        -- Space: Server, Client
        --------------------------------------------------------
        -- Emitter: SideviewbodyComponent
        -- Space: Server, Client
        --------------------------------------------------------
    
        -- Parameters
        local Entity = event.Entity
        local Normal = event.Normal
        local Point = event.Point
        local TileInfo = event.TileInfo
        local TileMap = event.TileMap
        local TilePosition = event.TilePosition
        --------------------------------------------------------
    
        local currWallTile = self.WallTile
    
        if currWallTile ~= nil and currWallTile.position == TilePosition then
        	self.WallTile = nil
        end
        end
    end
    

# SeeAlso

  * RectTileCollisionBeginEvent
  * RectTileCollisionEndEvent
  * Vector2
  * [SideViewRectTile모드로 맵 만들기](/docs?postId=758)
  * [SideViewRectTileMap에서 캐릭터 이동 제어](/docs?postId=759)