WorldRoot

사용되지 않는 항목 표시

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

만들 수 없음

이 기본 클래스는 WorkspaceWorldModel와 같이 3D 공간 쿼리 및 시뮬레이션을 처리하기 위한 모든 인스턴스에 대한 API를 제공합니다.

요약

속성

속성Model에서 상속되었습니다
  • 플러그인 보안
    병렬 읽기

    인스턴스 스트리밍이 활성화된 경험에 대한 모델의 세부 수준을 설정합니다.

  • 인스턴스 스트리밍이 활성화된 경우 Models에서 모델 스트리밍 행동을 제어합니다.

  • 병렬 읽기

    기본 부분의 Model 또는 nil 명시적으로 설정되지 않은 경우.

  • 복제되지 않음
    스크립팅할 수 없음
    병렬 읽기

    편집기에만 사용되는 속성으로, 피벗 주위에 모델을 확장하는 데 사용됩니다. 이 속성을 설정하면 피벗에서 Model/ScaleTo가 호출된 것처럼 규모가 이동됩니다.

  • 복제되지 않음
    병렬 읽기

    어떤 Model가지고 있지 않은 피벗의 위치를 결정합니다. where the pivot of a which does not have a set Model.PrimaryPart 는.

속성PVInstance에서 상속되었습니다

메서드

메서드Model에서 상속되었습니다
  • AddPersistentPlayer(playerInstance : Player):()

    지정된 플레이어에 대해 이 모델을 영구적으로 유지하도록 설정합니다.Model.ModelStreamingMode 는 추가로 인해 변경된 동작을 위해 PersistentPerPlayer 로 설정해야 합니다.

  • 모델의 모든 부분을 포함하는 볼륨의 설명을 반환합니다.

  • 설정되면 의 모든 것을 포함하는 가장 작은 바인딩 상자의 크기를 반환합니다.Returns the size of the smallest bounding box that contains all of the in the , aligned with the if it is set.

  • 이 모델 개체가 영구적으로 유지하는 모든 Player 개체를 반환합니다.이 메서드가 Script 또는 LocalScript 호출되는지에 따라 동작이 달라집니다.

  • 새로 생성된 모델에 기본값이 1인 모델의 캐논 규모를 반환하며, Model/ScaleTo를 통해 크기가 조정될 때 변경됩니다.

  • MoveTo(position : Vector3):()

    PrimaryPart를 지정된 위치로 이동합니다. 기본 부품이 지정되지 않았으면 모델의 루트 부품이 사용됩니다.

  • RemovePersistentPlayer(playerInstance : Player):()

    지정된 플레이어에 대해 이 모델을 더 이상 영구적으로 유지하지 않습니다.Model.ModelStreamingMode 는 제거로 인해 변경된 동작을 위해 PersistentPerPlayer 로 설정해야 합니다.

  • ScaleTo(newScaleFactor : number):()

    모델의 규모 요소를 설정하여 모든 하위 인스턴스의 크기와 위치를 조정하여 규모 요소가 1일 때 초기 크기와 위치와 관련하여 그 규모 요소가 있도록 합니다.

  • TranslateBy(delta : Vector3):()

    모델의 방향을 유지하면서 주어진 오프셋 Model에 의해 이동하여 Vector3로 전환합니다.새 위치에 이미 다른 BasePart 또는 Terrain 가 있으면 해당 Model 가 해당 개체를 겹치게 합니다.

메서드PVInstance에서 상속되었습니다

속성

메서드

ArePartsTouchingOthers

ArePartsTouchingOthers 는 지정된 BasePart 중 하나 이상이 다른 부품에 접촉하는 경우 true를 반환합니다.두 부분이 거리 임계값 내에 있으면 "터치"로 간주됩니다, overlapIgnored .

부품이 제공되지 않으면 false가 반환됩니다.

매개 변수

partList: Instances

목록에 있는 부품이 목록에 없는 부품에 닿고 있는지 확인하는 부품 검사 목록입니다.

기본값: ""
overlapIgnored: number

부품이 닿는 것으로 간주되기 전에 무시되는 스터드의 부품 겹치기 임계값.

기본값: 0.000199999995

반환

부품 목록에 없는 다른 부품에 만지는 경우 중 하나라도 있으면 참이고, 부품이 전달되지 않으면 거짓입니다.

코드 샘플

The code block below demonstrates how to use WorldRoot:ArePartsTouchingOthers() to check if parts in a list are touching any parts in the workspace not in the list.

First the script creates two square parts that overlap 1 stud, Part1 and Part2. Then, it prints the value returned by ArePartsTouchingOthers() when Part1 is passed in partList at three different overlap values: 0, 0.999, and 1. The first two times ArePartsTouchingOthers() is called return false because the overlap values are less than the distance that Part1 and Part2 overlap. The third call returns true because the overlap value is equal to the distance that the parts overlap.

Checking for Touching Parts

local part1 = Instance.new("Part")
part1.Name = "Part1"
part1.Anchored = true
part1.Transparency = 0.5
part1.Color = Color3.fromRGB(185, 100, 38)
part1.Size = Vector3.new(2, 2, 2)
part1.Position = Vector3.new(0, 4, 0)
part1.Parent = workspace
local part2 = Instance.new("Part")
part2.Name = "Part2"
part2.Anchored = true
part2.Transparency = 0.5
part2.Color = Color3.fromRGB(200, 10, 0)
part2.Size = Vector3.new(2, 2, 2)
part2.Position = Vector3.new(0, 5, 0)
part2.Parent = workspace
local partList = { part1 }
print(workspace:ArePartsTouchingOthers(partList, 0)) -- True
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- True
print(workspace:ArePartsTouchingOthers(partList, 1)) -- False

Blockcast

병렬 쓰기

지정된 방향으로 블록 모양을 던지고 BasePart 또는 Terrain 셀로 첫 번째 충돌을 반환합니다.이는 충돌을 찾기 위해 선형 광선을 방향으로 던지는 방식과 비슷하지만, 레이 대신 3D 모양을 사용합니다.

와 달리, 이 메서드는 처음에 모양이 교차하는 것을 감지하지 않습니다.

히트가 감지되면 RaycastResult 에 히트 정보가 포함된 반환됩니다.Distance 속성은 형태가 히트를 찾기 위해 이동해야 하는 거리를 나타내며, Position 속성은 히트를 일으키는 교차점을 나타냅니다.

이 메서드는 무효한 CFrame , 크기 또는 방향 입력이 전달되면 오류를 발생시킵니다.

매개 변수

cframe: CFrame

캐스트 블록 모양의 초기 위치와 회전.

기본값: ""
size: Vector3

캐스트 블록 모양의 크기가 스터드 단위입니다. 최대 크기는 512 스터드입니다.

기본값: ""
direction: Vector3

모양 캐스트의 방향, 크기가 모양이 이동할 수 있는 최대 거리를 나타내는 값. 최대 거리는 1024스터드입니다.

기본값: ""
기본값: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

쉐이프캐스트 작업의 결과 또는 nil 적합한 BasePart 또는 Terrain 세포가 타격되지 않은 경우가 포함됩니다.

코드 샘플

Casts a block and returns the first collision with a BasePart or Terrain. Prints the properties of the RaycastResult if a result was hit.

Blockcasting

local Workspace = game:GetService("Workspace")
local function castBlock()
-- The initial position and rotation of the cast block shape
local originCFrame = CFrame.new(Vector3.new(0, 50, 0))
-- The size of the cast block shape
local size = Vector3.new(6, 3, 9)
-- The direction the block is cast in
local direction = -Vector3.yAxis
-- The maximum distance of the cast
local distance = 50
-- Cast the block and create a visualization of it
local raycastResult = Workspace:Blockcast(originCFrame, size, direction * distance)
if raycastResult then
-- Print all properties of the RaycastResult if it exists
print(`Block intersected with: {raycastResult.Instance:GetFullName()}`)
print(`Intersection position: {raycastResult.Position}`)
print(`Distance between block's initial position and result: {raycastResult.Distance}`)
print(`The normal vector of the intersected face: {raycastResult.Normal}`)
print(`Material hit: {raycastResult.Material.Name}`)
else
print("Nothing was hit")
end
end
-- Continually cast a block every 2 seconds
while true do
castBlock()
task.wait(2)
end

BulkMoveTo

()

이 함수는 기본 속성 BaseParts 이벤트를 발생시키지 않고 테이블의 CFramesChanged 테이블로 이동합니다.이렇게 하면 각 부품에 대한 별도 속성 집합 비용을 지불할 필요가 없으므로 큰 수의 부품을 이동하는 데 매우 빠른 방법을 제공합니다.

세 번째 인수는 이동 작업을 더 최적화할 수 있게 합니다.기본적으로 각 부분의 이벤트 ChangedPosition , OrientationCFrame 에 대해 발생합니다.그러나 세 번째 인수로 FireCFrameChanged 를 지정하면 속성 CFrame 에 대한 Changed 이벤트만 발생합니다.

부품 이동이 코드에서 병목 상태인지 확신하는 경우에만 이 함수를 사용해야 합니다.단순히 개별 부품 및 접합 모델의 CFrame 속성을 설정하는 것만으로도 대부분의 경우에 충분히 빠릅니다.

매개 변수

partList: Instances
기본값: ""
cframeList: Array
기본값: ""
기본값: "FireAllEvents"

반환

()

GetPartBoundsInBox

Instances
병렬 쓰기

는 부품의 경계 상자가 주어진 중심( )과 크기( )를 사용하여 설명되는 상자의 볼륨을 겹치게 하는 배열을 반환합니다.

강조했듯이 이 공간 쿼리 메서드는 실제 점유 용량이 아닌 부품의 바인딩 상자 용량을 효율적으로 고려합니다.실린더, 구, 연합 및 블록이 아닌 모양의 MeshParts 가 고려될 때 중요할 수 있습니다.정확도가 특히 중요한 경우 WorldRoot:GetPartsInPart() 대신 사용하거나 이 메서드의 결과를 직접 필터링하십시오.

이 메서드는 개체를 사용하여 공간 쿼리의 재사용 가능한 부분을 설명하며, 포함 또는 제외 목록, 쿼리에 사용할 최대 부품 수, 충돌 그룹을 사용할지 여부 및 쿼리가 교차된 부분의 값을 선호하는지 여부를 설명합니다.

매개 변수

cframe: CFrame

쿼리할 지정된 상자 볼륨의 중심 위치.

기본값: ""
size: Vector3

쿼리할 지정된 상자 볼륨의 크기.

기본값: ""
overlapParams: OverlapParams

공간 쿼리 매개 변수의 재사용 가능한 부분을 포함합니다.

기본값: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

Instances

공간 쿼리와 일치하는 BaseParts 배열.

GetPartBoundsInRadius

Instances
병렬 쓰기

는 바인딩 상자가 오버랩되는 부품 배열을 반환하며, 이 배열에는 주어진 중심( )과 반경(number)을 사용하여 볼륨이 설명됩니다.

강조했듯이 이 공간 쿼리 메서드는 실제 점유 용량이 아닌 부품의 바인딩 상자 용량을 효율적으로 고려합니다.실린더, 구, 연합 및 블록이 아닌 모양의 MeshParts 가 고려될 때 중요할 수 있습니다.정확도가 특히 중요한 경우 WorldRoot:GetPartsInPart() 대신 사용하거나 이 메서드의 결과를 직접 필터링하십시오.

이 메서드는 개체를 사용하여 공간 쿼리의 재사용 가능한 부분을 설명하며, 포함 또는 제외 목록, 쿼리에 사용할 최대 부품 수, 충돌 그룹을 사용할지 여부 및 쿼리가 교차된 부분의 값을 선호하는지 여부를 설명합니다.

매개 변수

position: Vector3

쿼리할 지정된 구체 볼륨의 중심 위치.

기본값: ""
radius: number

쿼리할 지정된 구체 볼륨의 반경.

기본값: ""
overlapParams: OverlapParams

공간 쿼리 매개 변수의 재사용 가능한 부분을 포함합니다.

기본값: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

Instances

공간 쿼리와 일치하는 BaseParts 배열.

GetPartsInPart

Instances
병렬 쓰기

WorldRoot:GetPartsInPart()는 주어진 부품과 공유 공간을 가진 부품 배열을 반환합니다(쿼리할 부품이 동일한 WorldRoot에 있어야 함).이 메서드는 BasePart:GetTouchingParts() 대신 사용할 수 있으며 일반적으로 더 나은 선택입니다.

언급했듯이 이 공간 쿼리 메서드는 전체 기하 충돌 확인사용하여 지정된 부품이 차지하는 정확한 용량을 고려합니다.예를 들어, 콘베이스/공극 부품은 실제로 이러한 부품을 겹치거나 터치하지 않는 한 쿼리된 부품과 일치하지 않습니다.간단한 볼륨의 경우 WorldRoot:GetPartBoundsInBox() 또는 WorldRoot:GetPartBoundsInRadius() 을 사용하는 것이 더 정확하지만 더 효율적으로 수행하므로 고려해 보십시오.

이 메서드는 개체를 사용하여 공간 쿼리의 재사용 가능한 부분을 설명하며, 포함 또는 제외 목록, 쿼리에 사용할 최대 부품 수, 충돌 그룹을 사용할지 여부 및 쿼리가 교차된 부분의 값을 선호하는지 여부를 설명합니다.

매개 변수

part: BasePart

다른 부품과 비교할 볼륨이 있는 부품.

기본값: ""
overlapParams: OverlapParams

공간 쿼리 매개 변수의 재사용 가능한 부분을 포함합니다.

기본값: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

Instances

공간 쿼리와 일치하는 BaseParts 배열.

IKMoveTo

()
플러그인 보안

이 함수는 특정 부품을 직접 이동하는 대신 역학적 역전을 통해 지정된 위치로 이동하여 참여하는 모든 관절이나 충돌이 물리적으로 만족스러운 상태로 유지되도록 합니다.현재 이 함수는 실행 중인 게임의 물리학과 충돌하기 때문에 Studio에서만 사용할 수 있습니다(plugins).

강도 번역 은 0과 1 사이의 숫자로, 부품의 위치를 대상 CFrame의 위치와 얼마나 공격적으로 일치시킬지 지정합니다. 강성 회전 은 0과 1 사이의 숫자로, 부품의 회전을 대상 CFrame의 회전 부분과 얼마나 공격적으로 일치시킬지 지정합니다.

예를 들어:

  • 번역 강도와 회전 강도가 모두 1과 같으면 부품이 물리적 제약 조건에 관계없이 목표 CFrame으로 정확하게 이동됩니다.
  • 번역 강도와 회전 강도가 둘 다 0.5와 같으면 부품이 정확히 대상 CFrame으로 이동하려고 하지만, 물리적 제약으로 인해 방해받을 수 있습니다.
  • 번역 강도와 회전 강도가 둘 다 0과 동일한 경우 대상 CFrame이 무시되고 물리적 제약 조건이 대상의 위치에서 해결됩니다.

매개 변수

part: BasePart

이동 중인 부품.

기본값: ""
target: CFrame

지정된 부품을 이동할 위치.

기본값: ""
translateStiffness: number

0과 1 사이의 숫자로 부품의 위치를 대상의 위치와 얼마나 공격적으로 일치시킬지 지정합니다 CFrame .

기본값: 0.5
rotateStiffness: number

0과 1 사이의 숫자로 부품의 회전을 대상의 회전과 얼마나 공격적으로 일치시킬지 지정합니다 CFrame .

기본값: 0.5
collisionsMode: Enum.IKCollisionsMode

물리적 해상도로 영향을 받아야 하는 개체를 지정할 수 있습니다.

기본값: "OtherMechanismsAnchored"

반환

()
병렬 쓰기

기원, 방향 및 선택적 RaycastParams을 사용하여 광선을 던집니다.적합한 BasePart 또는 Terrain 셀을 찾으면 작업의 결과를 포함하는 RaycastResult 가 반환됩니다.RaycastParams 개체가 제공되지 않으면 기본값이 사용됩니다(모든 부품이 고려되고 Terrain 물은 무시되지 않음).

방향 벡터의 길이(크기)가 중요하다는 점에 유의하십시오, 방향 벡터의 길이보다 멀리 있는 개체/지형은 테스트되지 않을 것입니다.광선 구성 요소를 만드는 데 도움이 되는 CFrame를 사용하는 경우, 아래 예제에서 보여준 것처럼 방향 벡터로 CFrame.LookVector를 사용하고 원하는 길이로 곱하십시오.방향 벡터의 최대 길이는 15,000스터드입니다.

이 메서드는 사용하지 않지만 원본과 방향 구성 요소는 및 에서 빌려올 수 있습니다.

매개 변수

origin: Vector3

광선의 원점.

기본값: ""
direction: Vector3

레이의 방향 벡터. 이 벡터의 길이가 중요하며, 길이가 더 멀리 있는 부품/지형은 테스트되지 않습니다.

기본값: ""
raycastParams: RaycastParams

레이캐스트 작업에서 히트 요구 사항을 지정하는 데 사용되는 개체.제공되지 않으면 모든 부품이 고려되고 Terrain 물이 무시되지 않는 기본값이 사용됩니다.

기본값: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

레이캐스트 작업의 결과 또는 nil 적합한 BasePart 또는 Terrain 세포가 타격되지 않은 경우 결과를 포함합니다.

코드 샘플

Casts a ray and returns the first collision with a BasePart or Terrain. Prints the properties of the RaycastResult if a result was hit.

Raycasting

local Workspace = game:GetService("Workspace")
local function castRay()
-- The origin point of the ray
local originPosition = Vector3.new(0, 50, 0)
-- The direction the ray is cast in
local direction = -Vector3.yAxis
-- The maximum distance of the ray
local distance = 50
-- Cast the ray and create a visualization of it
local raycastResult = Workspace:Raycast(originPosition, direction * distance)
if raycastResult then
-- Print all properties of the RaycastResult if it exists
print(`Ray intersected with: {raycastResult.Instance:GetFullName()}`)
print(`Intersection position: {raycastResult.Position}`)
print(`Distance between ray origin and result: {raycastResult.Distance}`)
print(`The normal vector of the intersected face: {raycastResult.Normal}`)
print(`Material hit: {raycastResult.Material.Name}`)
else
print("Nothing was hit")
end
end
-- Continually cast a ray every 2 seconds
while true do
castRay()
task.wait(2)
end

Shapecast

매개 변수

part: BasePart
기본값: ""
direction: Vector3
기본값: ""
기본값: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

Spherecast

병렬 쓰기

지정된 방향으로 구형 모양을 던지고 BasePart 또는 Terrain 세포로 첫 번째 충돌을 반환합니다.이는 충돌을 찾기 위해 선형 광선을 방향으로 던지는 방식과 비슷하지만, 레이 대신 3D 모양을 사용합니다.

와 달리, 이 메서드는 처음에 모양이 교차하는 것을 감지하지 않습니다.

히트가 감지되면 RaycastResult 에 히트 정보가 포함된 반환됩니다.Distance 속성은 형태가 히트를 찾기 위해 이동해야 하는 거리를 나타내며, Position 속성은 히트를 일으키는 교차점을 나타냅니다.

이 메서드는 유효하지 않은 반경 또는 방향 입력을 전달하면 오류를 발생시킵니다.

매개 변수

position: Vector3

캐스트 구형 모양의 초기 위치.

기본값: ""
radius: number

스터드에서 캐스트 구형 모양의 반경. 최대 반경은 256스터드입니다.

기본값: ""
direction: Vector3

모양 캐스트의 방향, 크기가 모양이 이동할 수 있는 최대 거리를 나타내는 값. 최대 거리는 1024스터드입니다.

기본값: ""
기본값: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

반환

쉐이프캐스트 작업의 결과 또는 nil 적합한 BasePart 또는 Terrain 세포가 타격되지 않은 경우가 포함됩니다.

코드 샘플

Casts a sphere and returns the first collision with a BasePart or Terrain. Prints the properties of the RaycastResult if a result was hit.

Spherecasting

local Workspace = game:GetService("Workspace")
local function castSphere()
-- The initial position of the cast spherical shape
local originPosition = Vector3.new(0, 50, 0)
-- The radius of the cast spherical shape in studs
local radius = 10
-- The direction the sphere is cast in
local direction = -Vector3.yAxis
-- The maximum distance of the cast
local distance = 50
-- Cast the sphere and create a visualization of it
local raycastResult = Workspace:Spherecast(originPosition, radius, direction * distance)
if raycastResult then
-- Print all properties of the RaycastResult if it exists
print(`Sphere intersected with: {raycastResult.Instance:GetFullName()}`)
print(`Intersection position: {raycastResult.Position}`)
print(`Distance between sphere's initial position and result: {raycastResult.Distance}`)
print(`The normal vector of the intersected face: {raycastResult.Normal}`)
print(`Material hit: {raycastResult.Material.Name}`)
else
print("Nothing was hit")
end
end
-- Continually cast a sphere every 2 seconds
while true do
castSphere()
task.wait(2)
end

StepPhysics

()
플러그인 보안

지정된 시간 증가와 선택적 BasePart 집합에 따라 세계의 부품에 대한 시뮬레이션을 앞으로 진행합니다.부품 세트가 지정되면 이 부품만 시뮬레이션되고 세계의 모든 다른 부품은 고정된 것으로 처리됩니다.이 인수가 생략되면 세계의 모든 부품이 시뮬레이션에 포함됩니다.지정된 시간 증가량은 더 큰 값일수록 함수의 런타임이 증가합니다. The specified time increment can be any positive number, with larger values increasing the runtime of the function.시간 증가량의 값에 따라 물리 시스템은 시뮬레이션의 정확도와 안정성을 유지하기 위해 여러 개의 단일 단계로 분할할 수 있습니다.함수가 여러 단계를 수행하더라도 시뮬레이션의 결과는 함수가 완료되면 한 번만 볼 수 있습니다.시뮬레이션의 개별 단계를 시각화하려면 함수를 RunService.RenderStepped 이벤트를 통해 렌더링 단계당 한 번 호출할 수 있습니다.

매개 변수

dt: number

시뮬레이션될 시간 수입니다. 이 인수는 양수여야 합니다. 더 큰 값은 이 함수의 런타임을 증가시킵니다.

기본값: ""
parts: Instances

시뮬레이션될 부품의 선택적 배열. 이 집합에는 유형 BasePart의 인스턴스가 포함되어야 하며, 다른 유형은 무시됩니다.

기본값: "{}"

반환

()

코드 샘플

Simulates the parts in the workspace for a fixed period of time by calling the StepPhysics function once per frame until a specified time has elaspsed.

StepPhysics

local RunService = game:GetService("RunService")
-- Optional array of parts to simulate; otherwise all parts will be simulated
local partsToSimulate = {
workspace.Part,
}
local function simulateParts(duration)
local time = 0.0
local stepJob
stepJob = RunService.RenderStepped:Connect(function(dt)
if time + dt > duration then
dt = duration - time
end
workspace:StepPhysics(dt, partsToSimulate)
time = time + dt
if time >= duration then
stepJob:Disconnect()
end
end)
end
-- Simulate workspace parts for 5 seconds, stepping the parts once per frame
simulateParts(5.0)

이벤트