# WorldRoot

WorldRoot : `Instance`

## Overview

3D 공간에서 물체를 감지하거나 시뮬레이션하는 기능을 수행하는 클래스입니다.

## Properties

## Methods

### Blockcast

주어진 위치(CFrame)와 크기(Extents)로 정의된 박스 형태의 공간을 지정한 방향(Direction)으로 이동시키며, 경로상의 오브젝트를 감지하고 결과를 RaycastResult 객체로 반환합니다. Raycast와 유사하지만, 광선 대신 박스 형태로 충돌을 감지하므로 더 넓은 영역의 오브젝트를 탐지할 수 있습니다.

#### Parameters

| `CFrame` InCFrame               | 박스의 초기 위치와 회전을 나타내는 좌표 프레임입니다.                                                                                                       |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `Vector3` InExtents             | 박스의 크기(가로, 세로, 높이)를 정의하는 벡터입니다.                                                                                                      |
| `Vector3` InDirection           | 박스가 이동할 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.                                                                         |
| `RaycastParams` InRaycastParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. RaycastParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `RaycastResult` | 박스의 경로에서 충돌한 첫 번째 오브젝트에 대한 정보를 담은 결과 객체입니다. 충돌이 없으면 nil을 반환합니다. |
| --------------- | --------------------------------------------------------------- |

#### Code Samples

### BlockcastSingleByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `CFrame` cFrame                          | TODO: add parameter description.                                                       |
| `Vector3` extents                        | TODO: add parameter description.                                                       |
| `Vector3` direction                      | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type            | Description                   |
| --------------- | ----------------------------- |
| `RaycastResult` | TODO: add return description. |

#### Code Samples

### Capsulecast

주어진 위치(CFrame), 반지름(Radius), 높이(Height)로 정의된 캡슐 형태의 공간을 지정한 방향(Direction)으로 이동시키며, 경로상의 오브젝트를 감지하고 결과를 RaycastResult 객체로 반환합니다. 캐릭터의 이동 경로나 충돌 예측에 적합하며, 캐릭터의 형태와 유사한 캡슐 모양으로 충돌을 감지합니다.

#### Parameters

| `CFrame` InCFrame               | 캡슐의 초기 위치와 회전을 나타내는 좌표 프레임입니다.                                                                                                       |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `number` InRadius               | 캡슐의 반지름입니다.                                                                                                                          |
| `number` InHeight               | 캡슐의 높이입니다.                                                                                                                           |
| `Vector3` InDirection           | 캡슐이 이동할 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.                                                                         |
| `RaycastParams` InRaycastParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. RaycastParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `RaycastResult` | 캡슐의 경로에서 충돌한 첫 번째 오브젝트에 대한 정보를 담은 결과 객체입니다. 충돌이 없으면 nil을 반환합니다. |
| --------------- | --------------------------------------------------------------- |

#### Code Samples

### CapsulecastSingleByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `CFrame` cFrame                          | TODO: add parameter description.                                                       |
| `number` radius                          | TODO: add parameter description.                                                       |
| `number` height                          | TODO: add parameter description.                                                       |
| `Vector3` direction                      | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type            | Description                   |
| --------------- | ----------------------------- |
| `RaycastResult` | TODO: add return description. |

#### Code Samples

### DrawRay

주어진 시작점(origin)과 방향(direction)을 기준으로 지정한 색상의 광선을 화면에 표시하여 시각적으로 확인할 수 있도록 해주는 메서드입니다. 주로 디버깅 용도로 활용되며, Raycast의 방향과 도달 위치를 시각적으로 파악할 때 유용합니다.

#### Parameters

| `Vector3` InOrigin    | 광선(ray)이 발사되는 출발 지점입니다.                                  |
| --------------------- | -------------------------------------------------------- |
| `Vector3` InDirection | 광선의 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다. |
| `Color3` InColor      | 광선의 색상입니다.                                               |
| `number` InThickness  | 광선의 선 두께입니다.                                             |
| `number` InLifeTime   | 광선이 월드에서 유지될 시간(초 단위)입니다.                                |

#### Return

| `void` |   |
| ------ | - |

#### Code Samples

```lua
local Workspace = game:GetService("Workspace")

local Origin = Vector3.new(0, 50, 0)
local Direction = Vector3.new(0, 0, -1000)
local Color = Color3.fromRGB(255, 0, 0)
local Thickness = 5
local LifeTime = 1.5

Workspace:DrawRay(Origin, Direction, Color, Thickness, LifeTime)
```

### GetPartBoundsInBox

주어진 중심 위치(Center)와 크기(Size)로 정의된 박스 형태의 공간에서, 그 영역과 겹치는 파트들을 찾아 배열로 반환합니다. 필터링 조건이나 감지 범위 등을 세부적으로 설정하기 위해 OverlapParams를 함께 사용할 수 있습니다.

#### Parameters

| `CFrame` InCenter               | 감지할 영역의 중심 좌표입니다.                                                                                                                    |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `Vector3` InSize                | 박스 형태로 설정된 감지 범위의 가로, 세로, 높이 크기입니다.                                                                                                  |
| `OverlapParams` InOverlapParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. OverlapParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `array` | 박스의 범위에서 감지된 오브젝트들의 배열입니다. |
| ------- | -------------------------- |

#### Code Samples

```lua
local Center = Vector3.new(0, 50, 0)
local Size = Vector3.new(1000, 1000, 1000)
local Cframe = CFrame.new(Center)
local PartsInBox = workspace:GetPartBoundsInBox(Cframe, Size)

for _, obj in ipairs(PartsInBox) do
    print(obj.Name)
end
```

### GetPartBoundsInBoxByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `CFrame` center                          | TODO: add parameter description.                                                       |
| `Vector3` size                           | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type              | Description                   |
| ----------------- | ----------------------------- |
| `Array<BasePart>` | TODO: add return description. |

#### Code Samples

### GetPartBoundsInSphere

주어진 중심 위치(Center)와 반지름(Radius)으로 정의된 구 형태의 공간에서, 그 영역과 겹치는 파트들을 찾아 배열로 반환합니다. 근접 체크나 범위 효과(Area-of-Effect) 판정에 유용합니다.

#### Parameters

| `CFrame` InCenter               | 감지할 구 형태 영역의 중심 좌표입니다.                                                                                                               |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `number` InRadius               | 구의 반지름입니다.                                                                                                                           |
| `OverlapParams` InOverlapParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. OverlapParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `array` | 구의 범위에서 감지된 오브젝트들의 배열입니다. |
| ------- | ------------------------- |

#### Code Samples

### GetPartBoundsInSphereByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `CFrame` center                          | TODO: add parameter description.                                                       |
| `number` radius                          | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type              | Description                   |
| ----------------- | ----------------------------- |
| `Array<BasePart>` | TODO: add return description. |

#### Code Samples

### GetPartsInPart

지정된 BasePart와 겹치는(충돌하는) 모든 파트들을 찾아 배열로 반환합니다. OverlapParams를 사용하여 특정 오브젝트를 포함하거나 제외하는 등 필터링 조건을 세부적으로 설정할 수 있습니다.

#### Parameters

| `BasePart` InBasePart           | 충돌을 감지할 기준이 되는 파트입니다.                                                                                                                |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `OverlapParams` InOverlapParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. OverlapParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `array` | 파트의 범위에서 감지된 오브젝트들의 배열입니다. |
| ------- | -------------------------- |

#### Code Samples

### PredictProjectilePathByChannel

TODO: add description.

#### Parameters

| Parameter                                   | Description                                                                            |
| ------------------------------------------- | -------------------------------------------------------------------------------------- |
| `Enum.CollisionChannel` traceChannel        | TODO: add parameter description.                                                       |
| `PredictProjectilePathParams` predictParams | TODO: add parameter description.                                                       |
| `CollisionResponseParams` responseParam     | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type                          | Description                   |
| ----------------------------- | ----------------------------- |
| `PredictProjectilePathResult` | TODO: add return description. |

#### Code Samples

### PredictProjectilePathByObject

오브젝트 쿼리 파라미터를 기준으로 발사체의 예상 경로를 계산하고 결과를 반환합니다.

#### Parameters

| `PredictProjectilePathParams` PredictParams | 발사체의 시작 위치, 속도, 중력 등 경로 예측에 필요한 파라미터를 담은 객체입니다.                  |
| ------------------------------------------- | ---------------------------------------------------------------- |
| `CollisionObjectQueryParams` InObjectParams | 충돌 감지 대상이 될 오브젝트 타입을 지정하는 객체입니다. 특정 오브젝트 타입만 충돌 대상으로 설정할 수 있습니다. |

#### Return

| `PredictProjectilePathResult` | 발사체의 이동경로에서 충돌한 첫 번째 오브젝트에 대한 정보를 담은 결과 객체입니다. |
| ----------------------------- | ---------------------------------------------- |

#### Code Samples

### Raycast

주어진 시작점(origin)과 방향(direction)을 기준으로 보이지 않는 광선(ray)을 발사해, 경로상의 오브젝트를 감지하고 결과를 RaycastResult 객체로 반환됩니다. 필요할 경우 RaycastParams를 설정하여 감지 대상이나 조건을 지정할 수 있으며, RaycastParams를 생략하면 기본값이 적용되어 모든 파트가 감지 대상이 됩니다.

#### Parameters

| `Vector3` InOrigin              | 광선(ray)이 발사되는 출발 지점입니다.                                                                                                              |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `Vector3` InDirection           | 광선의 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.                                                                             |
| `RaycastParams` InRaycastParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. RaycastParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `RaycastResult` | 광선이 충돌한 첫 번째 오브젝트에 대한 정보를 담은 결과 객체입니다. 충돌이 없으면 nil을 반환합니다. |
| --------------- | ---------------------------------------------------------- |

#### Code Samples

```lua
local Workspace = game:GetService("Workspace")

local Origin = Vector3.new(0, 50, 0)
local Direction = Vector3.new(0, 0, -3000)

local RaycastParams = RaycastParams.new()
RaycastParams.FilterType = Enum.RaycastFilterType.Exclude 
RaycastParams.FilterDescendantsInstances = 
{ 
    Workspace.Part
}

local Result = Workspace:Raycast(Origin, Direction, RaycastParams)
if Result then
    print("Result Position : ", Result.Position)
    print("Result Name : ", Result.Instance.Name)
else
    print("Result nil")
end
```

### RaycastMulti

주어진 시작점(origin)과 방향(direction)을 기준으로 광선(ray)을 발사해, 경로상의 모든 오브젝트를 감지하고 결과를 배열로 반환합니다. Raycast와 달리 첫 번째 충돌만 반환하는 것이 아니라, 광선 경로상의 모든 충돌 결과를 배열로 반환합니다. 관통 효과나 다중 대상 감지에 유용합니다.

#### Parameters

| `Vector3` InOrigin              | 광선(ray)이 발사되는 출발 지점입니다.                                                                                                              |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `Vector3` InDirection           | 광선의 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.                                                                             |
| `RaycastParams` InRaycastParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. RaycastParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `array` | 광선 경로상에서 감지된 모든 RaycastResult 객체들의 배열입니다. |
| ------- | ----------------------------------------- |

#### Code Samples

### RaycastMultiByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `Vector3` origin                         | TODO: add parameter description.                                                       |
| `Vector3` direction                      | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type                   | Description                   |
| ---------------------- | ----------------------------- |
| `Array<RaycastResult>` | TODO: add return description. |

#### Code Samples

### RaycastMultiByObject

오브젝트 쿼리 파라미터를 기준으로 광선(ray)을 발사해, 경로상의 모든 오브젝트를 감지하고 결과를 배열로 반환합니다. RaycastMulti와 동일한 방식으로 동작하지만, 오브젝트 타입을 기반으로 충돌 감지를 수행합니다.

#### Parameters

| `Vector3` InOrigin                   | 광선(ray)이 발사되는 출발 지점입니다.                                            |
| ------------------------------------ | ------------------------------------------------------------------ |
| `Vector3` InDirection                | 광선의 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.           |
| `CollisionQueryParams` InQueryParams | 충돌 쿼리의 세부 조건을 설정할 수 있는 객체입니다. 감지 대상이나 무시할 오브젝트 등을 세밀하게 지정할 수 있습니다. |

#### Return

| `array` | 광선 경로상에서 감지된 모든 RaycastResult 객체들의 배열입니다. |
| ------- | ----------------------------------------- |

#### Code Samples

### RaycastSingleByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `Vector3` origin                         | TODO: add parameter description.                                                       |
| `Vector3` direction                      | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type            | Description                   |
| --------------- | ----------------------------- |
| `RaycastResult` | TODO: add return description. |

#### Code Samples

### RaycastSingleByObject

오브젝트 쿼리 파라미터를 기준으로 광선(ray)을 발사해, 경로상에서 가장 먼저 충돌하는 오브젝트를 감지하고 결과를 RaycastResult 객체로 반환합니다. Raycast와 동일한 방식으로 동작하지만, 오브젝트 타입을 기반으로 충돌 감지를 수행합니다.

#### Parameters

| `Vector3` InOrigin                   | 광선(ray)이 발사되는 출발 지점입니다.                                            |
| ------------------------------------ | ------------------------------------------------------------------ |
| `Vector3` InDirection                | 광선의 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.           |
| `CollisionQueryParams` InQueryParams | 충돌 쿼리의 세부 조건을 설정할 수 있는 객체입니다. 감지 대상이나 무시할 오브젝트 등을 세밀하게 지정할 수 있습니다. |

#### Return

| `RaycastResult` | 광선이 충돌한 첫 번째 오브젝트에 대한 정보를 담은 결과 객체입니다. 충돌이 없으면 nil을 반환합니다. |
| --------------- | ---------------------------------------------------------- |

#### Code Samples

### Spherecast

주어진 시작점(Origin)과 반지름(Radius)으로 정의된 구 형태의 공간을 지정한 방향(Direction)으로 이동시키며, 경로상의 오브젝트를 감지하고 결과를 RaycastResult 객체로 반환합니다. Raycast와 유사하지만, 광선 대신 구 형태로 충돌을 감지하므로 더 넓은 영역의 오브젝트를 탐지할 수 있습니다. 근접 무기 판정이나 넓은 영역의 충돌 감지에 유용합니다.

#### Parameters

| `Vector3` InOrigin              | 구가 시작되는 출발 지점입니다.                                                                                                                    |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `number` InRadius               | 구의 반지름입니다.                                                                                                                           |
| `Vector3` InDirection           | 구가 이동할 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.                                                                          |
| `RaycastParams` InRaycastParams | 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. RaycastParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다. |

#### Return

| `RaycastResult` | 구의 경로에서 충돌한 첫 번째 오브젝트에 대한 정보를 담은 결과 객체입니다. 충돌이 없으면 nil을 반환합니다. |
| --------------- | -------------------------------------------------------------- |

#### Code Samples

### SpherecastSingleByChannel

TODO: add description.

#### Parameters

| Parameter                                | Description                                                                            |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `CFrame` cFrame                          | TODO: add parameter description.                                                       |
| `number` radius                          | TODO: add parameter description.                                                       |
| `Vector3` direction                      | TODO: add parameter description.                                                       |
| `Enum.CollisionChannel` traceChannel     | TODO: add parameter description.                                                       |
| `CollisionQueryParams` queryParams       | TODO: add parameter description. Default: `FLuaCollisionQueryParams::GetDefault()`.    |
| `CollisionResponseParams` responseParams | TODO: add parameter description. Default: `FLuaCollisionResponseParams::GetDefault()`. |

#### Return

| Type            | Description                   |
| --------------- | ----------------------------- |
| `RaycastResult` | TODO: add return description. |

#### Code Samples

## Events
