WorldRoot
*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.
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ư Workspace và WorldModel .
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.
Phần chính của Model , hoặc nil nếu không được cài đặtmột cách rõ ràng.
Đố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ó.
Xác định vị trí pivot của một Model có pivot không có set Model.PrimaryPart được đặt.
Phương Pháp
Trả về true nếu bất kỳ phần nào của BasePart đang chạm vào bất kỳ phần nào khác.
Tạo hình dạng khối trong một hướng nào đó và trả lại một RaycastResult nếu hình dạng đó đến một hạng BasePart hoặc Terrain .
Trả lại một loạt các bộ phận có các giới hạn của hộp đầu vào. hộp đầu vào là một hộp đầu có các giới hạn.
Trả lại một loạt các bộ phận có các hộp giới hạn trùng với một cái hộp nào đó.
Trả lại một loạt các bộ phận có không gian được chia sẻ với bộ phận được cho.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Di chuyển bộ phận được chỉ định đến vị trí chỉ định thông qua kinh hành động ngược lại thay vì di chuyển nó đến trực tiếp, để đảm bảo bất kỳ khớp nối, hạn chế hoặc va chạm mà bộ phận đó tham gia vào vẫn được đáp ứng để đảm bảo sự hài lòng vật lý của nó.
Sử dụng một ngọn lửa bằng cách sử dụng một nguồn gốc, hướng và tùy chọn RaycastParams , sau đó trả lại một RaycastResult nếu một đối tượng hoặc mảnh đất nào đó kết hợp với ngọn lửa.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Tạo hình dạng tròn ở một hướng nhất định và trả lại một RaycastResult nếu hình dạng đó đến một hạng BasePart hoặc Terrain .
Tiến hành mô phỏng cho các bộ phận trên thế giới trên cơ sở thời gian được xác định và một bộ dụng cụ tùy chọn của BaseParts .
Đặ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 .
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.
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.
Đ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.
Đổ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ì
Nhận pivot của một PVInstance .
Biến hình PVInstance cùng với tất cả các con cháu của nó PVInstances để pivot được đặt ở CFrame đã định.
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ố
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.
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.
Lợi Nhuận
Mẫu mã
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
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 BaseParts mà ban đầ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ố
Vị trí ban đầu và hướng quay của hình dạng khối.
Kích thước của khối hình dạng trong studs. Kích thước tối đa là 512 studs.
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.
Lợi Nhuận
Mẫu mã
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
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ố
Lợi Nhuận
GetPartBoundsInBox
Class.WorldRoot:GetPartBoundsInBox() trả lại một loạt các bộ phận có kích thước bên hộp và CFrame 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ố
Địa điểm của trung tâm của khối lượng được yêu cầu.
Kích thước của hội chỉ số hộp được yêu cầu.
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.
Lợi Nhuận
Một dàn trùng BaseParts đã khớp nối với truy vấn không gian.
GetPartBoundsInRadius
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ố
Vị trí của trung tâm của khối lượng tròn được yêu cầu.
Bán kính của khối lượng hình cầu được yêu cầu.
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.
Lợi Nhuận
Một dàn trùng BaseParts đã khớp nối với truy vấn không gian.
GetPartsInPart
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ố
Phần có volume cần được kiểm tra so với các phần khác.
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.
Lợi Nhuận
Một dàn trùng BaseParts đã khớp nối với truy vấn không gian.
IKMoveTo
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ố
Bộ phận đang được di chuyển.
Địa điểm di chuyển bộ phận được xác định.
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 .
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 .
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ý.
Lợi Nhuận
Raycast
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ố
Điểm xuất phát của các tia.
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.
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.
Lợi Nhuận
Mẫu mã
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ố
Lợi Nhuận
Spherecast
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 BaseParts mà ban đầ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ố
Vị trí ban đầu của hình dạng trụ tròn.
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.
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.
Lợi Nhuận
Mẫu mã
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
Tiến hành mô phỏng cho các bộ phận trên thế giớ
Tham Số
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.
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.
Lợi Nhuận
Mẫu mã
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)