Roblox Studio Raycast tool

로블록스 Raycast Luau 코드 생성기

시작점과 목적지 좌표로 방향 벡터와 길이를 계산하고, RaycastParams의 필터·물·충돌 조건을 반영한 Luau 코드를 만듭니다. 입력은 이 브라우저 안에서만 처리하며 Roblox 계정이나 게임에 연결하지 않습니다.

Raycast 조건 입력

시작점 · rayOrigin
목적지 · rayDestination

각 좌표는 -1,000,000~1,000,000으로 검사합니다. 시작점과 목적지는 달라야 하고 두 점의 거리는 15,000 studs 이하여야 합니다.

현재 RaycastParams API의 ExcludeInstances 또는 IncludeInstances 코드를 생성합니다.

코드에서 이미 Instance를 가리키는 Luau 변수 이름을 한 줄에 하나씩 최대 8개 입력하세요. 객체 경로는 먼저 변수에 담아야 합니다.

게임에 실제로 등록된 충돌 그룹 이름과 정확히 같아야 합니다. 100자는 이 도구의 입력 제한입니다.

IgnoreWater = true를 생성합니다.

RespectCanCollide = true일 때 교차한 Part의 CanCollide 값을 CanQuery보다 우선해 포함 여부를 판단합니다.

좌표와 필터 조건을 확인한 뒤 Raycast 코드 생성하기를 누르세요.

0 길이 Ray와 필터 변수 충돌 구분

시작점 (0,0,0), 목적지 (0.0000001,0,0)의 브라우저 길이는 1e-7입니다. 코드는 작은 목적지 좌표를 0으로 잘라내지 않습니다. 두 점이 같으면 생성하지 않으며 15,000 studs를 넘는 길이도 오류로 표시합니다. 실제 충돌은 엔진 좌표 정밀도·필터·CanQuery 등 조건에 따라 Studio에서 확인해야 합니다.

필터에 넣은 변수는 코드가 새로 선언하는 Workspace나 raycastParams와 이름이 같을 수 있습니다. 입력 변수들을 먼저 별도 테이블에 보관해 생성 코드의 지역 변수로 바뀌지 않게 했습니다. 그래도 각 변수에 실제 Instance가 들어 있는지는 실행 전에 직접 확인하세요.

문서 재확인·도구 수정: 2026년 10월 24일 · 작성: Robux.co.kr 운영자. 입력·예상·브라우저 출력 검증 기록에서 같은 값으로 재현할 수 있습니다. Roblox Studio·Player 실행 검증은 포함하지 않습니다.

생성한 코드를 Studio에서 확인하는 순서

  1. Workspace에서 시작점과 목적지로 사용할 두 위치를 정하고, 이 페이지에 각각의 Vector3 좌표를 입력합니다.
  2. 캐릭터 자신을 맞히면 안 되는 경우처럼 제외할 Instance가 있으면 해당 객체를 가리키는 변수를 Script에 먼저 준비합니다. 경로가 길면 Instance 경로 코드 생성기로 변수 코드를 만들 수 있습니다.
  3. 필터·Water·충돌 그룹·CanCollide 조건을 선택하고 Luau 코드를 생성합니다.
  4. 서버 Script 또는 의도한 LocalScript에 코드를 옮기고, Studio Play 테스트에서 Output의 Hit 또는 No raycast result를 확인합니다.
  5. 결과가 예상과 다르면 필터를 한 번에 여러 개 바꾸지 말고 방향·CanQuery·CollisionGroup·Streaming 순으로 하나씩 확인합니다.

방향 벡터가 곧 Ray의 길이입니다

Roblox Creator Hub의 Raycasting 문서는 Workspace:Raycast(origin, direction, params)에서 방향 벡터가 방향뿐 아니라 길이도 포함한다고 설명합니다. 목적지가 알려졌다면 rayDestination - rayOrigin으로 방향을 만들 수 있으며, 방향 벡터의 Magnitude가 실제 Ray 길이입니다.

공식 문서가 제시한 최대 길이는 15,000 studs입니다. 이 도구는 같은 점을 두 번 입력한 길이 0 Ray와 15,000을 넘는 입력을 오류로 막습니다. 긴 거리를 검사해야 한다면 제한을 무시하는 코드를 만들기보다 구간을 나누거나 게임 설계를 다시 검토하세요.

Include와 Exclude를 구분하는 법

RaycastParams API의 현재 공개 문서는 ExcludeInstances와 IncludeInstances를 제공합니다. Exclude는 적은 대상과 그 자손을 후보에서 빼고, Include는 적은 대상과 그 자손만 후보로 삼습니다. 두 목록에 모두 해당하면 제외가 우선합니다.

API 문서는 IncludeInstances = nil과 빈 배열 {}의 결과가 반대라고 명시합니다. nil은 모든 대상을 허용하는 가장 느슨한 필터이고, 빈 배열은 아무 대상도 허용하지 않습니다. 그래서 이 도구는 Include를 선택한 뒤 변수 목록을 비워 두면 코드를 만들지 않고 오류를 표시합니다.

기존 예제에서 보이는 FilterDescendantsInstances와 FilterType도 API에 남아 있지만, 현재 API 문서는 새 작업에서 IncludeInstances·ExcludeInstances가 이를 대체한다고 표시합니다. 이 도구는 새 속성을 사용하며, 기존 프로젝트의 엔진·코드 호환성은 Studio에서 직접 확인해야 합니다.

물·충돌 그룹·CanQuery가 결과를 바꿉니다

  • IgnoreWater: true면 Terrain의 Water 재질을 Raycast 대상으로 보지 않습니다.
  • CollisionGroup: 적은 그룹과 충돌하지 않도록 설정된 그룹의 Part는 무시됩니다. 이름이 실제 게임 설정과 다르면 의도한 필터가 되지 않습니다.
  • RespectCanCollide: true면 교차한 Part의 CanCollide가 CanQuery보다 우선합니다. 기본 Raycast가 항상 CanCollide만 본다고 가정하지 마세요.
  • CanQuery: Raycasting 문서는 BasePart의 CanQuery를 false로 하면 기본 감지 대상에서 제외할 수 있다고 설명합니다.

BruteForceAllSlow는 모든 Part를 강제로 검사하는 성격이며 공식 API가 성능 저하와 라이브 게임 비권장을 명시하므로 이 생성기에서 제공하지 않습니다.

RaycastResult와 nil을 함께 처리합니다

Ray가 대상과 교차하면 RaycastResult에서 Instance, Position, Distance, Material, Normal을 읽을 수 있습니다. 아무것도 맞지 않으면 결과가 nil일 수 있으므로 생성 코드는 if raycastResult then 분기를 포함합니다.

Streaming이 켜진 게임의 클라이언트에서는 멀리 있는 BasePart가 아직 내려오지 않아 Raycast가 대상을 감지하지 못할 수 있습니다. 클라이언트가 보낸 피격 결과나 목적지를 보상·대미지의 유일한 근거로 사용하지 말고, 중요한 판정은 서버에서 거리·방향·대상을 다시 검증해야 합니다.

확인한 범위와 도구의 제한

2026년 9월 26일 Windows 데스크톱 브라우저에서 Roblox Creator Hub의 Raycasting, RaycastParams, RaycastResult 공개 문서를 확인했습니다. 공개 페이지에는 기능의 최초 발표일이나 최종 수정일이 표시되지 않아 날짜를 추정하지 않았습니다. 실제 Roblox Studio에서 생성 코드를 실행하거나 특정 게임의 충돌 그룹·Streaming·보안 구조를 시험한 범위는 아닙니다.

  • 좌표 ±1,000,000, 필터 변수 8개, 충돌 그룹 이름 100자는 입력 실수를 줄이기 위한 이 페이지의 제한이며 Roblox Engine의 전체 한도가 아닙니다.
  • 필터 입력은 단일 Luau 변수 이름만 받습니다. workspace.Map 같은 경로나 함수 호출을 그대로 넣지 말고 변수에 담으세요.
  • Spherecast·Blockcast·Shapecast, 탄도 중력, 여러 Ray 분산, 네트워크 지연 보정과 서버 치트 검증은 만들지 않습니다.
  • 초기화하면 아래로 100 studs 예시, 필터 없음, Default 그룹, Water 무시, RespectCanCollide 꺼짐 상태로 돌아갑니다.