레이캐스팅

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

가장 기본적인 레벨, 레이캐스팅 은 정의된 길이의 특정 방향의 Vector3 지점에서 보이지 않는 광선을 보내는 행위입니다.캐스트가 완료되면 레이가 BasePart 또는 Terrain 셀에 타격하는지 여부를 감지할 수 있습니다.

레이저는 떠있는 오브에 의해 발사되고, 레이캐스팅은 레이저가 플랫폼에 타격하는지 여부를 결정합니다.레이저에 의해 터치된 플랫폼은 일시적으로 파괴됩니다.

방향의 원점에서 메서드로 광선을 캐스팅할 수 있습니다.You can cast a ray with the method ( ) from a origin in a direction.

기본 레이캐스트

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.new(0, 0, 0)
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)

해당가능한 경우, 알려진 원본목적지 를 사용하여 알려지지 않은 방향 벡터(rayDirection)를 계산할 수 있습니다.이는 한 플레이어 캐릭터에서 다른 플레이어 캐릭터로 바뀔 수 있는 두 점 사이에 광선을 캐스팅할 때 유용합니다.

  1. 원과 방향 벡터는 광선의 목적지를 나타냅니다:

    레이 원본 + 레이 방향 = 레이 대상

  2. 방정식의 양쪽에서 rayOrigin을 뺀다:

    rayOrigin + rayDirection - rayOrigin = rayDestination - rayOrigin

  3. 광선의 방향은 원점을 빼고 목적지와 같습니다:

    광선 방향 = 광선 목적지 - 광선 원점


local Workspace = game:GetService("Workspace")
local rayOrigin = Workspace.TestOrigin.Position
local rayDestination = Workspace.TestDestination.Position
local rayDirection = rayDestination - rayOrigin
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)

필터 옵션

는 선택적인 개체를 수락하여 레이캐스트가 특정 를 선택적으로 포함하거나 제외하도록 지시하거나, 물 재료를 무시하거나 충돌 그룹 을 사용하도록 지시합니다.

설명
FilterDescendantsInstances후손이 필터링 레이캐스팅 후보에 사용되는 개체의 수
FilterTypeEnum.RaycastFilterType 레이캐스트 작업에서 배열 FilterDescendantsInstances 이 사용되는 방법을 결정하는 열거형.
  • Exclude — 모든 BasePart 는 배열의 개체 후손인 것을 제외하고 모두 고려됩니다 **** .
  • Include — 배열의 개체 후손인 것만 고려됩니다(BaseParts).
IgnoreWater레이캐스팅할 때 재료가 고려되는지 여부를 결정하는 부울입니다. 대상은 Terrain입니다.
CollisionGroup광선 던지기 작업에 사용된 충돌 그룹의 문자열 이름.
레이캐스트 필터링

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {script.Parent}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.IgnoreWater = true
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection, raycastParams)

히트 감지

레이캐스팅 작업이 적격 BasePart 또는 Terrain 셀에 타격하면 결과를 포함하는 RaycastResult 개체가 반환됩니다.히트를 테스트하려면 결과가 nil 이고 필요한 경우 다음 속성을 사용하여 확인하십시오.

속성설명
Instance레이가 교차한 세포의 BasePart 또는 Terrain 셀.
PositionVector3 광선과 Instance 사이의 교차점 위치.
Distance광선 원과 교차점 사이의 거리.
Material교차 지점에서의 Enum.Material 또는 BasePart 또는 Terrain 의 값.
NormalVector3 상호 교차 된 얼굴의 일반 벡터.
레이캐스트 히트 감지

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)
if raycastResult then
print("Instance:", raycastResult.Instance)
print("Position:", raycastResult.Position)
print("Distance:", raycastResult.Distance)
print("Material:", raycastResult.Material)
print("Normal:", raycastResult.Normal)
else
warn("No raycast result!")
end