เรียนรู้
Engine Class
WorldRoot
ไม่สามารถสร้าง

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่


สรุป
วิธีการ
ArePartsTouchingOthers(partList: Instances,overlapIgnored: number):boolean
Blockcast(cframe: CFrame,size: Vector3,direction: Vector3,params: RaycastParams):RaycastResult?
BulkMoveTo(partList: Instances,cframeList: {any},eventMode: Enum.BulkMoveMode):()
FindPartOnRay(ray: Ray,ignoreDescendantsInstance: Instance,terrainCellsAreCubes: boolean,ignoreWater: boolean):Tuple
เลิกใช้แล้ว
findPartOnRay(ray: Ray,ignoreDescendantsInstance: Instance,terrainCellsAreCubes: boolean,ignoreWater: boolean):Tuple
เลิกใช้แล้ว
FindPartOnRayWithIgnoreList(ray: Ray,ignoreDescendantsTable: Instances,terrainCellsAreCubes: boolean,ignoreWater: boolean):Tuple
เลิกใช้แล้ว
FindPartOnRayWithWhitelist(ray: Ray,whitelistDescendantsTable: Instances,ignoreWater: boolean):Tuple
เลิกใช้แล้ว
FindPartsInRegion3(region: Region3,ignoreDescendantsInstance: Instance,maxParts: number):{BasePart}
เลิกใช้แล้ว
findPartsInRegion3(region: Region3,ignoreDescendantsInstance: Instance,maxParts: number):{BasePart}
เลิกใช้แล้ว
FindPartsInRegion3WithIgnoreList(region: Region3,ignoreDescendantsTable: Instances,maxParts: number):{BasePart}
เลิกใช้แล้ว
FindPartsInRegion3WithWhiteList(region: Region3,whitelistDescendantsTable: Instances,maxParts: number):{BasePart}
เลิกใช้แล้ว
GetPartBoundsInBox(cframe: CFrame,size: Vector3,overlapParams: OverlapParams):{BasePart}
GetPartBoundsInRadius(position: Vector3,radius: number,overlapParams: OverlapParams):{BasePart}
IKMoveTo(part: BasePart,target: CFrame,translateStiffness: number,rotateStiffness: number,collisionsMode: Enum.IKCollisionsMode):()
IsRegion3Empty(region: Region3,ignoreDescendentsInstance: Instance):boolean
เลิกใช้แล้ว
IsRegion3EmptyWithIgnoreList(region: Region3,ignoreDescendentsTable: Instances):boolean
เลิกใช้แล้ว
Raycast(origin: Vector3,direction: Vector3,raycastParams: RaycastParams):RaycastResult?
Spherecast(position: Vector3,radius: number,direction: Vector3,params: RaycastParams):RaycastResult?
StepPhysics(dt: number,parts: Instances):()
สมาชิกที่ได้รับทอด
ได้รับทอดโดย

เอกสารอ้างอิงเกี่ยวกับ API
วิธีการ
ArePartsTouchingOthers
การเข้าถึงการจำลองสถานการณ์
WorldRoot:ArePartsTouchingOthers(
partList:Instances, overlapIgnored:number
พารามิเตอร์
partList:Instances
overlapIgnored:number
ค่าเริ่มต้น: 0.000199999995
ส่งค่ากลับ
ตัวอย่างโค้ด
ตรวจสอบการสัมผัสของชิ้นส่วน
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)) -- จริง
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- จริง
print(workspace:ArePartsTouchingOthers(partList, 1)) -- เท็จ

Blockcast
เขียนพร้อมๆ กัน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:Blockcast(
cframe:CFrame, size:Vector3, direction:Vector3, params:RaycastParams
พารามิเตอร์
cframe:CFrame
size:Vector3
direction:Vector3
ค่าเริ่มต้น: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ
ตัวอย่างโค้ด
บล็อคแคสต์
local Workspace = game:GetService("Workspace")
local function castBlock()
-- ตำแหน่งเริ่มต้นและการหมุนของบล็อคที่แคสต์
local originCFrame = CFrame.new(Vector3.new(0, 50, 0))
-- ขนาดของบล็อคที่แคสต์
local size = Vector3.new(6, 3, 9)
-- ทิศทางที่บล็อคถูกแคสต์
local direction = -Vector3.yAxis
-- ระยะทางสูงสุดของการแคสต์
local distance = 50
-- ทำการแคสต์บล็อคและสร้างการแสดงผลของมัน
local raycastResult = Workspace:Blockcast(originCFrame, size, direction * distance)
if raycastResult then
-- แสดงคุณสมบัติทั้งหมดของ RaycastResult หากมันมีอยู่
print(`บล็อคชนกับ: {raycastResult.Instance:GetFullName()}`)
print(`ตำแหน่งการตัดกัน: {raycastResult.Position}`)
print(`ระยะทางระหว่างตำแหน่งเริ่มต้นของบล็อคกับผลลัพธ์: {raycastResult.Distance}`)
print(`เวกเตอร์ปกติของหน้าที่ถูกชน: {raycastResult.Normal}`)
print(`วัสดุที่ชน: {raycastResult.Material.Name}`)
else
print("ไม่มีอะไรถูกชน")
end
end
-- แคสต์บล็อคอย่างต่อเนื่องทุก ๆ 2 วินาที
while true do
castBlock()
task.wait(2)
end

BulkMoveTo
การเข้าถึงการจำลองสถานการณ์
WorldRoot:BulkMoveTo(
partList:Instances, cframeList:{any}, eventMode:Enum.BulkMoveMode
):()
พารามิเตอร์
partList:Instances
cframeList:{any}
ค่าเริ่มต้น: "FireAllEvents"
ส่งค่ากลับ
()

FindPartOnRay
เลิกใช้แล้ว

findPartOnRay
เลิกใช้แล้ว

FindPartOnRayWithIgnoreList
เลิกใช้แล้ว

FindPartOnRayWithWhitelist
เลิกใช้แล้ว

FindPartsInRegion3
เลิกใช้แล้ว

findPartsInRegion3
เลิกใช้แล้ว

FindPartsInRegion3WithIgnoreList
เลิกใช้แล้ว

FindPartsInRegion3WithWhiteList
เลิกใช้แล้ว

GetPartBoundsInBox
เขียนพร้อมๆ กัน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:GetPartBoundsInBox(
cframe:CFrame, size:Vector3, overlapParams:OverlapParams
พารามิเตอร์
cframe:CFrame
size:Vector3
overlapParams:OverlapParams
ค่าเริ่มต้น: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ

GetPartBoundsInRadius
เขียนพร้อมๆ กัน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:GetPartBoundsInRadius(
position:Vector3, radius:number, overlapParams:OverlapParams
พารามิเตอร์
position:Vector3
radius:number
overlapParams:OverlapParams
ค่าเริ่มต้น: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ

GetPartsInPart
เขียนพร้อมๆ กัน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:GetPartsInPart(
part:BasePart, overlapParams:OverlapParams
พารามิเตอร์
overlapParams:OverlapParams
ค่าเริ่มต้น: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ

IKMoveTo
การรักษาความปลอดภัยของปลั๊กอิน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:IKMoveTo(
part:BasePart, target:CFrame, translateStiffness:number, rotateStiffness:number, collisionsMode:Enum.IKCollisionsMode
):()
พารามิเตอร์
target:CFrame
translateStiffness:number
ค่าเริ่มต้น: 0.5
rotateStiffness:number
ค่าเริ่มต้น: 0.5
collisionsMode:Enum.IKCollisionsMode
ค่าเริ่มต้น: "OtherMechanismsAnchored"
ส่งค่ากลับ
()

IsRegion3Empty
เลิกใช้แล้ว

IsRegion3EmptyWithIgnoreList
เลิกใช้แล้ว

Raycast
เขียนพร้อมๆ กัน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:Raycast(
origin:Vector3, direction:Vector3, raycastParams:RaycastParams
พารามิเตอร์
origin:Vector3
direction:Vector3
raycastParams:RaycastParams
ค่าเริ่มต้น: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ
ตัวอย่างโค้ด
การเรนเดอร์รังสี
local Workspace = game:GetService("Workspace")
local function castRay()
-- จุดเริ่มต้นของรังสี
local originPosition = Vector3.new(0, 50, 0)
-- ทิศทางที่รังสีถูกสร้างขึ้น
local direction = -Vector3.yAxis
-- ระยะทางสูงสุดของรังสี
local distance = 50
-- สร้างรังสีและสร้างการแสดงภาพของมัน
local raycastResult = Workspace:Raycast(originPosition, direction * distance)
if raycastResult then
-- พิมพ์คุณสมบัติทั้งหมดของ RaycastResult หากมันมี
print(`รังสีชนกับ: {raycastResult.Instance:GetFullName()}`)
print(`จุดการตัดกัน: {raycastResult.Position}`)
print(`ระยะทางระหว่างจุดเริ่มต้นของรังสีและผลลัพธ์: {raycastResult.Distance}`)
print(`เวกเตอร์ปกติของพื้นผิวที่ถูกชน: {raycastResult.Normal}`)
print(`วัสดุที่ชน: {raycastResult.Material.Name}`)
else
print("ไม่มีอะไรถูกชน")
end
end
-- ทำการสร้างรังสีทุก 2 วินาที
while true do
castRay()
task.wait(2)
end

Shapecast
การเข้าถึงการจำลองสถานการณ์
WorldRoot:Shapecast(
part:BasePart, direction:Vector3, params:RaycastParams
พารามิเตอร์
direction:Vector3
ค่าเริ่มต้น: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ

Spherecast
เขียนพร้อมๆ กัน
การเข้าถึงการจำลองสถานการณ์
WorldRoot:Spherecast(
position:Vector3, radius:number, direction:Vector3, params:RaycastParams
พารามิเตอร์
position:Vector3
radius:number
direction:Vector3
ค่าเริ่มต้น: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"
ส่งค่ากลับ
ตัวอย่างโค้ด
การสร้างทรงกลม
local Workspace = game:GetService("Workspace")
local function castSphere()
-- ตำแหน่งเริ่มต้นของทรงกลมที่ถูกสร้าง
local originPosition = Vector3.new(0, 50, 0)
-- รัศมีของทรงกลมที่ถูกสร้างใน studs
local radius = 10
-- ทิศทางที่ทรงกลมถูกสร้างใน
local direction = -Vector3.yAxis
-- ระยะสูงสุดของการสร้าง
local distance = 50
-- สร้างทรงกลมและสร้างการแสดงภาพของมัน
local raycastResult = Workspace:Spherecast(originPosition, radius, direction * distance)
if raycastResult then
-- แสดงคุณสมบัติทั้งหมดของ RaycastResult หากมันมีอยู่
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("ไม่มีการชนเกิดขึ้น")
end
end
-- สร้างทรงกลมอย่างต่อเนื่องทุก ๆ 2 วินาที
while true do
castSphere()
task.wait(2)
end

StepPhysics
การรักษาความปลอดภัยของปลั๊กอิน
WorldRoot:StepPhysics(
dt:number, parts:Instances
):()
พารามิเตอร์
parts:Instances
ค่าเริ่มต้น: "{}"
ส่งค่ากลับ
()
ตัวอย่างโค้ด
ฟิสิกส์ขั้นตอน
local RunService = game:GetService("RunService")
-- อาร์เรย์ของส่วนประกอบที่เลือกเพื่อจำลอง; หากไม่มี ผิวทั้งหมดจะถูกจำลอง
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
-- จำลองส่วนประกอบในพื้นที่ทำงานเป็นเวลา 5 วินาที, จัดการขั้นตอนส่วนประกอบครั้งละเฟรม
simulateParts(5.0)

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ