WorldRoot

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo

Lớp này cung cấp một API cho bất kỳ lớp nào dùng để xử lý các truy vấn 3D và mô phỏng, ví dụ như WorkspaceWorldModel .

Tóm Tắt

Thuộc Tính

Thuộc Tính kế thừa từ Model
  • Đặt cấp độ chi tiết trên mô hình cho các trải nghiệm có hỗ trợ dòng chảy trên tài nguyên.

  • Xác định hành vi phát sóng mô hình trên Models khi mô hình phát sóng được bật.

  • Đọc Song Song

    Phần chính của Model , hoặc nil nếu không được cài đặtmột cách rõ ràng.

  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song

    Đối tượng chỉnh sửa được sử dụng để thay đổi kích thước mô hình xung quanh cầu nối của nó. Việc cài đặt đối tượng này sẽ di chuyển kích thước như thể Model/ScaleTo đã được gọi trên nó.

  • Không Sao Chép
    Đọc Song Song

    Xác định vị trí pivot của một Model có pivot không có set Model.PrimaryPart được đặt.

Thuộc Tính kế thừa từ PVInstance
  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song
  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song

Phương Pháp

Phương Pháp kế thừa từ Model
  • AddPersistentPlayer(playerInstance : Player):void

    Đặt mô hình này để trở nên bền vững cho người chơi được chỉ định. Model.ModelStreamingMode phải được đặt để PersistentPerPlayer để hành động được thay đổi khi kết hợp với nhau.

  • Trả lại một mô tả của một khối lượng có chứa tất cả các bộ phận của một Mô hình.

  • Trả lại kích thước của chiếc hộp giới hạn nhỏ nhất mà chứa tất cả các BaseParts trong Model, bên cạnh với Model.PrimaryPart nếu nó được cài đặt.

  • Điều tra tất cả các Player đối tượng mà đối tượng này được duy trì cho. Hành vi biến đổi dựa trênWhether this method is called from a Script or a LocalScript .

  • Trả lại kích thước tham chiếu của mô hình, mặc định là 1 cho những mô hình mới tạo và sẽ thay đổi khi nó được thiết lập thông qua Model/ScaleTo .

  • MoveTo(position : Vector3):void

    Di chuyển PrimaryPart đến vị trí đã định. Nếu một phần chính chưa được xác định, phần chính của model sẽ được sử dụng.

  • RemovePersistentPlayer(playerInstance : Player):void

    Làm cho mô hình này không còn bền vững cho người chơi được chỉ định. Model.ModelStreamingMode phải được cài đặt thành PersistentPerPlayer để hành động này được thay đổi khi kết thúc.

  • ScaleTo(newScaleFactor : number):void

    Điều chỉnh yếu tố thước đo của mô hình, điều chỉnh kích thước và vị trí của tất cả các Instance con cháu của mô hình để có được yếu tố thước đo tương ứng với kích thước và vị trí ban đầu của mô hình khi yếu tố thước đo được 1.

  • TranslateBy(delta : Vector3):void

    Đổi một Model bằng cách đưa ra một Vector3 Offset, giữ gìn hướng của mô hình. Nếu một BasePart hoặc 1> Class.Terrain1> đã tồn tại ở vị trí mới thì

Phương Pháp kế thừa từ PVInstance

Thuộc Tính

Phương Pháp

ArePartsTouchingOthers

ArePartsTouchingOthers trả về true nếu ít nhất một trong những BasePart đang chạm vào bất kỳ bộ phận nào khác. Hai bộ phận được xem như "chạm" nếu chúng ở trong giới hạn thời gian, overlapIgnored .

Nếu không cung cấp các bộ phận, false được trả về.

Tham Số

partList: Instances

Một danh sách các bộ phận kiểm tra để xem có phải bất kỳ bộ phận nào trong danh sách đang chạm vào bất kỳ bộ phận nào không có trong danh sách.

overlapIgnored: number

Giới hạn dịch vị trí trong các ký hiệu được bỏ qua trước khi xem xét các bộ phận có liên quan.

Giá Trị Mặc Định: 0.000199999995

Lợi Nhuận

Đúng nếu và chỉ nếu bất kỳ một trong parts trong partList đang chạm vào bất kỳ phần nào khác (phần không trong danh sách phần). Falso nếu không có phần được chuyển.

Mẫu mã

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

Ghi Song Song

Tạo hình khối trong một hướng nào đó và trả lại vụ va chạm đầu tiên với một BasePart hoặc Terrain tế bảo. Điều này tương tự như cách WorldRoot:Raycast() cast một ray trong hướng

Ngoài ra, phương thức này không phản ánh WorldRoot:GetPartsInPart() , không phản ánh BasePartsban đầu đã giao hình dạng.

Nếu một đòn đánh được phát hiện, một RaycastResult được trả lại chứa thông tin đòn đánh. Thuộc tính Distance đại diện khoảng cách mà hình dạng phải đến để tìm mộ

Phương thức này ném một lỗi nếu nó được truyền bằng cách sai CFrame , kích thước hoặc hướng nhập.

Tham Số

cframe: CFrame

Vị trí ban đầu và hướng quay của hình dạng khối.

size: Vector3

Kích thước của khối hình dạng trong studs. Kích thước tối đa là 512 studs.

direction: Vector3

Hướng của shapecast, với kích thước diện tích tối đa mà hình dạng có thể di chuyển. Kích thước tối đa là 1024 studs.

Giá Trị Mặc Định: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Bao gồm kết quả của hoạt động shapecast, hoặc nil nếu không có ô tô hợp lệ BasePart hoặc Terrain cell đã được gặp.

Mẫu mã

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

void

Hàm này di chuyển một bảng của BaseParts đến bảng của CFrames mà không cần phải khởi động các sự kiện mặc định của Changed . Điều này cung

Lý do thứ ba cho phép bạn tối ưu hóa thêm hoạt động di chuyển. Bằng mặc đ

Ghi chú rằng bạn chỉ nên sử dụng chức năng này nếu bạn chắc chắn rằng hoạt động di chuyển là một chai câm trong mã của bạn. Bằng cách đơn giản là thiết lập thuộc tính CFrame của các bộ phận cụ thể và mối hàn mô hình là nhanh chóng đủ trong hầu hế

Tham Số

partList: Instances
cframeList: Array
Giá Trị Mặc Định: "FireAllEvents"

Lợi Nhuận

void

GetPartBoundsInBox

Instances
Ghi Song Song

Class.WorldRoot:GetPartBoundsInBox() trả lại một loạt các bộ phận có kích thước bên hộpCFrame vượt lên một hộp có kích thước 0> bên trung tâm0> và kích thước WorldRoot:GetPartBoundsInBox()3> được mô tả bằng cách sử dụng

Như đã nhấn mạnh, phương thức truy vấn không gian này hiệu quả xem xét kích thước của các khoảng trống của các bộ phận mà không phải là kích thước thực tế của chúng. Điều này có thể là quan trọng khi x

Phương pháp này sử dụng một OverlapParams đối tượng để mô tả các phần tái sử dụng của câu hỏi địa lý, chẳng hạn như một danh sách bao gồm hoặc bị loại

Tham Số

cframe: CFrame

Địa điểm của trung tâm của khối lượng được yêu cầu.

size: Vector3

Kích thước của hội chỉ số hộp được yêu cầu.

overlapParams: OverlapParams

Bao gồm các phần tương tác nhiều lần của các tham số truy vấn không gian.

Giá Trị Mặc Định: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Instances

Một dàn trùng BaseParts đã khớp nối với truy vấn không gian.

GetPartBoundsInRadius

Instances
Ghi Song Song

WorldRoot:GetPartBoundsInRadius() trả lại một loạt các bộ phận có giới hạn đồng nhau trên một quả cầu có volume được mô tả bằng các thông số trung tâm ( Vector3 ) và kích thước (number).

Như đã nhấn mạnh, phương thức truy vấn không gian này hiệu quả xem xét kích thước của các khoảng trống của các bộ phận mà không phải là kích thước thực tế của chúng. Điều này có thể là quan trọng khi x

Phương pháp này sử dụng một OverlapParams đối tượng để mô tả các phần tái sử dụng của câu hỏi địa lý, chẳng hạn như một danh sách bao gồm hoặc bị loại

Tham Số

position: Vector3

Vị trí của trung tâm của khối lượng tròn được yêu cầu.

radius: number

Bán kính của khối lượng hình cầu được yêu cầu.

overlapParams: OverlapParams

Bao gồm các phần tương tác nhiều lần của các tham số truy vấn không gian.

Giá Trị Mặc Định: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Instances

Một dàn trùng BaseParts đã khớp nối với truy vấn không gian.

GetPartsInPart

Instances
Ghi Song Song

WorldRoot:GetPartsInPart() trả lại một loạt các bộ phận có không gian đã sử dụng được chia sẻ với bộ phận được yêu cầu (có thể tồn tại trong cùng một WorldRoot như các bộ phận để được truy c

Như đã đề cập, phương thức yêu cầu này xem xét WorldRoot:GetPartBoundsInBox() được chiếm bởi bên trong của bộ phận được yêu cầu bằng cách sử dụng một cuộc va chạm

Phương pháp này sử dụng một OverlapParams đối tượng để mô tả các phần tái sử dụng của câu hỏi địa lý, chẳng hạn như một danh sách bao gồm hoặc bị loại

Tham Số

part: BasePart

Phần có volume cần được kiểm tra so với các phần khác.

overlapParams: OverlapParams

Bao gồm các phần tương tác nhiều lần của các tham số truy vấn không gian.

Giá Trị Mặc Định: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Instances

Một dàn trùng BaseParts đã khớp nối với truy vấn không gian.

IKMoveTo

void
Bảo Mật Plugin

Hàm này di chuyển phần được xác định đến vị trí xác định thông qua kinh hệ ngược thay vì di chuyển nó đến đó trực tiếp, để đảm bảo bất kỳ khớp nối nào, constraints , hoặc va ch

Hiểu độ cứng là một số từ 0 đến 1 cho biết mức độ cạnh tranh của bộ phận để vị trí của bộ phận trên mục tiêu CFrame. Hiểu độ cứng là một số từ 0 đến 1 cho biết mức độ cạnh tranh của bộ phận để vị trí

Ví dụ:

  • Nếu dịch cứng và quay cứng đều bằng 1, thì phần sẽ được di chuyển chính xác đến CFrame mục tiêu bất kể có bao nhiêu rào chắn vật lý.
  • Nếu dịch cứng và dịch cứng bằng góc nghiêng đều nhau là 0.5, thì phần sẽ cố gắng di chuyển chính xác vào CFrame mục tiêu, nhưng có thể bị đẩy ra khỏi con đường bởi những hạn chế vật lý trên nó.
  • Nếu dịch cứng và quay cứng đều bằng 0, thì CFrame mục tiêu sẽ bị lơ và các hạn chế vật lý sẽ được giải quyết cho mục tiêu ở vị trí nơi nó được.

Tham Số

part: BasePart

Bộ phận đang được di chuyển.

target: CFrame

Địa điểm di chuyển bộ phận được xác định.

translateStiffness: number

Một số từ 0 đến 1 để quy định mức độ tương tự giữa vị trí của bộ phận và vị trí của mục tiêu CFrame .

Giá Trị Mặc Định: 0.5
rotateStiffness: number

Một số từ 0 đến 1 để quy định mức độ tương tự như thế nào giữa quay của bộ phận và quay của bộ phận mục tiêu CFrame .

Giá Trị Mặc Định: 0.5
collisionsMode: Enum.IKCollisionsMode

Cho phép bạn xác định các thể hiện nào của vật phẩm nên ảnh hưởng bởi độ phân giải vật lý.

Giá Trị Mặc Định: "OtherMechanismsAnchored"

Lợi Nhuận

void
Ghi Song Song

Sử dụng một trục tia, hướng và tùy chọn RaycastParams . Nếu nó tìm thấy một BasePart hoặc Class.T

Lưu ý rằng chiều dài (magnitude) của hướng tuyến tính là quan trọng, vì các đối tượng / địa hình xa hơn khỏi kích thước của nó sẽ không được thử nghiệm. Nếu bạn đang

Phương pháp này không sử dụng một Datatype.Ray đối tượng, nhưng các thành phần nguồn gốc và hướng của nó có thể được vay mượn từ Datatype.Ray.Origin và 2> Datatype.Ray.Direction2> .

Tham Số

origin: Vector3

Điểm xuất phát của các tia.

direction: Vector3

Vectơ hướng của các ray. Ghi chú rằng chiều dài của vectơ này quan trọng, vì các bộ phận / địa hình xa hơn khỏi kích thước của nó sẽ không được thử nghiệm.

raycastParams: RaycastParams

Một đối tượng được sử dụng để xác định sự hợp lệ trúng đòn trong hoạt động raycast. Nếu không được cung cấp, các giá trị mặc định được sử dụng nơi đây, nơi tất cả các bộ phận được xem xét và Terrain nước không bị bỏ qua.

Giá Trị Mặc Định: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Bao gồm kết quả của một hoạt động raycast, hoặc nil nếu không có ô đủ để BasePart hoặc Terrain ô tế bào đã được đánh.

Mẫu mã

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

Tham Số

part: BasePart
direction: Vector3
Giá Trị Mặc Định: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Spherecast

Ghi Song Song

Tạo hình dạng tròn trong một hướng nào đó và trả lại lần va chạm đầu tiên với một BasePart hoặc Terrain tế bảo. Điều này tương tự như cách WorldRoot:Raycast() cast một ray trong h

Ngoài ra, phương thức này không phản ánh WorldRoot:GetPartsInPart() , không phản ánh BasePartsban đầu đã giao hình dạng.

Nếu một đòn đánh được phát hiện, một RaycastResult được trả lại chứa thông tin đòn đánh. Thuộc tính Distance đại diện khoảng cách mà hình dạng phải đến để tìm mộ

Phương thức này ném một lỗi nếu nó được truyền với các điều kiện không hợp lệ hoặc hướng.

Tham Số

position: Vector3

Vị trí ban đầu của hình dạng trụ tròn.

radius: number

Bán kính của hình dạng trụ tròn trong studs. Bán kính tối đa là 256 studs.

direction: Vector3

Hướng của shapecast, với kích thước diện tích tối đa mà hình dạng có thể di chuyển. Kích thước tối đa là 1024 studs.

Giá Trị Mặc Định: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Lợi Nhuận

Bao gồm kết quả của hoạt động shapecast, hoặc nil nếu không có ô tô hợp lệ BasePart hoặc Terrain cell đã được gặp.

Mẫu mã

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

void
Bảo Mật Plugin

Tiến hành mô phỏng cho các bộ phận trên thế giớ

Tham Số

dt: number

Số thời gian sẽ được mô phỏng. Giá này phải là một số dương. Các giá trị lớn hơn sẽ tăng thời gian chạy của hàm này.

parts: Instances

Dã tùy chỉnh một số bộ phận sẽ được mô phỏng. Set này phải chứa các instance có kiểu BasePart ; bất kỳ kiểu khác sẽ bị lãng quên.

Giá Trị Mặc Định: "{}"

Lợi Nhuận

void

Mẫu mã

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)

Sự Kiện