# Ray

## Overview

Ray는 3차원 공간에서 하나의 시작점을 기준으로, 지정된 방향을 따라 무한히 뻗어나가는 보이지 않는 광선을 의미합니다. 이 데이터 타입은 충돌을 수행하지 않으며, 방향 기반 계산이나 Raycast를 수행하기 위한 입력값을 구성하는 데 사용됩니다.

## Constructors

### new

시작점(Origin)과 방향(Direction)을 입력받아 새로운 Ray를 생성합니다. 생성된 Ray는 지정된 위치에서 시작하여 설정된 방향을 따라 무한히 연장됩니다.

#### Parameters

| `Vector3` InOrigin    | Ray가 시작되는 3차원 공간상의 위치를 지정합니다. 이 값은 광선의 기준점이 됩니다.                          |
| --------------------- | ------------------------------------------------------------------------- |
| `Vector3` InDirection | Ray가 진행할 방향을 나타내는 방향 벡터입니다. 일반적으로 정규화된 벡터를 사용하며, 이 방향을 따라 Ray가 무한히 연장됩니다. |

#### Return

| `Ray` | 지정된 시작점과 방향을 기반으로 생성된 Ray입니다. |
| ----- | ----------------------------- |

#### Code Samples

```lua
local Origin = Vector3.new(0, 50, 0)
local Direction = Vector3.new(0, 0, -1)
local Ray = Ray.new(Origin, Direction)
print(Ray)
```

## Properties

### Direction

`Vector3`

Ray가 어느 방향으로 진행하는지를 정의하며, 시작점에서부터 광선이 뻗어나가는 방향 기준을 제공합니다. 3차원 공간에서 Ray의 진행 방향을 결정하는 핵심 요소입니다.

#### Code Samples

```lua
local Origin = Vector3.new(0, 50, 0)
local Direction = Vector3.new(0, 0, -1)
local Ray = Ray.new(Origin, Direction)
print(Ray.Direction)
```

### Origin

`Vector3`

이 값은 Ray가 시작되는 지점을 의미하며, 3차원 공간에서 광선이 출발하는 기준 위치를 정의합니다.

#### Code Samples

```lua
local Origin = Vector3.new(0, 50, 0)
local Direction = Vector3.new(0, 0, -1)
local Ray = Ray.new(Origin, Direction)
print(Ray.Origin)
```

### Unit

`Ray`

방향 벡터가 정규화된 Ray를 의미하며, 방향의 크기는 항상 1입니다.

#### Code Samples

## Methods

### ClosestPoint

입력된 좌표를 Ray의 시작점과 방향을 기준으로 계산하여, Ray가 바라보는 방향상의 가장 가까운 위치로 변환된 벡터를 반환합니다. 이를 통해 특정 점이 Ray의 시야(line of sight) 상에서 어디에 위치하는지를 구할 수 있으며, 방향 기준 위치 계산이나 거리 판정 등에 활용됩니다.

#### Parameters

| `Vector3` InPoint | Ray를 기준으로 가장 가까운 위치를 계산할 대상이 되는 3차원 공간상의 점입니다. 이 점을 Ray의 시작점과 방향을 기준으로 투영하여 계산에 사용합니다. |
| ----------------- | -------------------------------------------------------------------------------------- |

#### Return

| `Vector3` | 입력된 점에 대해 Ray 상에서 가장 가까운 위치에 해당하는 3차원 좌표를 반환합니다. 반환되는 값은 Ray의 진행 방향 선상(line of sight)에 위치한 점입니다. |
| --------- | ------------------------------------------------------------------------------------------------ |

#### Code Samples

### Distance

입력된 좌표를 기준으로, Ray 위에서 가장 가까운 지점을 계산한 뒤 두 지점 사이의 거리를 반환합니다. 즉, ClosestPoint를 통해 구한 위치와 원래 점 사이의 직선 거리를 제공하며, Ray와 특정 점 사이의 거리 판정에 활용할 수 있습니다.

#### Parameters

| `Vector3` InPoint | Ray와의 거리를 계산할 기준이 되는 3차원 공간상의 점입니다. 이 점을 기준으로 Ray 위에서 가장 가까운 지점을 계산합니다. |
| ----------------- | ----------------------------------------------------------------------- |

#### Return

| `number` | 입력된 점과 Ray 사이의 최단 거리를 반환합니다. 이는 ClosestPoint를 통해 구한 Ray 상의 가장 가까운 지점과 원래 점 사이의 직선 거리입니다. |
| -------- | ---------------------------------------------------------------------------------------- |

#### Code Samples

## Events


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.overdare.com/korean/development/api-reference/datatype/ray.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
