가장 기본적인 레벨, 레이캐스팅 은 정의된 길이의 특정 방향의 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)를 계산할 수 있습니다.이는 한 플레이어 캐릭터에서 다른 플레이어 캐릭터로 바뀔 수 있는 두 점 사이에 광선을 캐스팅할 때 유용합니다.
원과 방향 벡터는 광선의 목적지를 나타냅니다:
레이 원본 + 레이 방향 = 레이 대상
방정식의 양쪽에서 rayOrigin을 뺀다:
rayOrigin + rayDirection - rayOrigin = rayDestination - rayOrigin
광선의 방향은 원점을 빼고 목적지와 같습니다:
광선 방향 = 광선 목적지 - 광선 원점
local Workspace = game:GetService("Workspace")local rayOrigin = Workspace.TestOrigin.Positionlocal rayDestination = Workspace.TestDestination.Positionlocal rayDirection = rayDestination - rayOriginlocal raycastResult = Workspace:Raycast(rayOrigin, rayDirection)
필터 옵션
는 선택적인 개체를 수락하여 레이캐스트가 특정 를 선택적으로 포함하거나 제외하도록 지시하거나, 물 재료를 무시하거나 충돌 그룹 을 사용하도록 지시합니다.
키 | 설명 |
---|---|
FilterDescendantsInstances | 후손이 필터링 레이캐스팅 후보에 사용되는 개체의 수 |
FilterType | Enum.RaycastFilterType 레이캐스트 작업에서 배열 FilterDescendantsInstances 이 사용되는 방법을 결정하는 열거형. |
IgnoreWater | 레이캐스팅할 때 물 재료가 고려되는지 여부를 결정하는 부울입니다. 대상은 Terrain입니다. |
CollisionGroup | 광선 던지기 작업에 사용된 충돌 그룹의 문자열 이름. |
레이캐스트 필터링
local Workspace = game:GetService("Workspace")local rayOrigin = Vector3.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastParams = RaycastParams.new()raycastParams.FilterDescendantsInstances = {script.Parent}raycastParams.FilterType = Enum.RaycastFilterType.ExcluderaycastParams.IgnoreWater = truelocal raycastResult = Workspace:Raycast(rayOrigin, rayDirection, raycastParams)
히트 감지
레이캐스팅 작업이 적격 BasePart 또는 Terrain 셀에 타격하면 결과를 포함하는 RaycastResult 개체가 반환됩니다.히트를 테스트하려면 결과가 nil 이고 필요한 경우 다음 속성을 사용하여 확인하십시오.
속성 | 설명 |
---|---|
Instance | 레이가 교차한 세포의 BasePart 또는 Terrain 셀. |
Position | Vector3 광선과 Instance 사이의 교차점 위치. |
Distance | 광선 원과 교차점 사이의 거리. |
Material | 교차 지점에서의 Enum.Material 또는 BasePart 또는 Terrain 의 값. |
Normal | Vector3 상호 교차 된 얼굴의 일반 벡터. |
레이캐스트 히트 감지
local Workspace = game:GetService("Workspace")local rayOrigin = Vector3.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)if raycastResult thenprint("Instance:", raycastResult.Instance)print("Position:", raycastResult.Position)print("Distance:", raycastResult.Distance)print("Material:", raycastResult.Material)print("Normal:", raycastResult.Normal)elsewarn("No raycast result!")end