WorldRoot

WorldRoot : Instance

Overview

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

Properties

Methods

Raycast

주어진 시작점(origin)과 방향(direction)을 기준으로 보이지 않는 광선(ray)을 발사해, 경로상의 오브젝트를 감지하고 결과를 RaycastResult 객체로 반환됩니다.

필요할 경우 RaycastParams를 설정하여 감지 대상이나 조건을 지정할 수 있으며, RaycastParams를 생략하면 기본값이 적용되어 모든 파트가 감지 대상이 됩니다.

Parameters

Vector3 InOrigin

광선(ray)이 발사되는 출발 지점입니다.

Vector3 InDirection

광선의 방향을 나타내는 벡터이며, 이 벡터의 길이(크기)에 따라 감지 가능한 거리도 함께 결정됩니다.

RaycastParams InRaycastParams

어떤 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다.

RaycastParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.

이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다.

Return

RaycastResult

Raycast 감지 결과를 담는 객체이며, 감지된 오브젝트가 없을 경우 nil이 반환됩니다.

Code Samples

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

GetPartBoundsInBox

주어진 중심 위치(Center)와 크기(Size)로 정의된 박스 형태의 공간에서, 그 영역과 겹치는 파트들을 찾아 배열로 반환합니다.

이때 실제 파트의 형상이 아닌 외곽 경계 상자(Bounding Box)를 기준으로 판단되기 때문에, 구형, 원통형, 또는 복잡한 MeshPart처럼 정육면체가 아닌 형태는 정확도가 다소 낮을 수 있습니다.

필터링 조건이나 감지 범위 등을 세부적으로 설정하기 위해 OverlapParams를 함께 사용할 수 있습니다.

Parameters

CFrame InCenter

감지할 영역의 중심 좌표입니다.

Vector3 InSize

박스 형태로 설정된 감지 범위의 가로, 세로, 높이 크기입니다.

OverlapParams InOverlapParams

어떤 오브젝트를 감지할지 조건을 설정 할 수 있는 설정 객체입니다. OverlapParams를 이용하여 특정 파트를 제외하거나, 충돌 그룹을 지정할 수 있습니다.

이 값을 지정하지 않으면 기본값이 적용되어, 모든 오브젝트가 감지 대상이 됩니다.

Return

array

감지된 BasePart 객체들이 배열 형태로 반환됩니다.

Code Samples

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

Events

Last updated