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 cơ sở này cung cấp một API cho bất kỳ instance nào dự định xử lý các truy vấn không gian 3D và mô phỏng, chẳng hạn như WorkspaceWorldModel .

Tóm Tắt

Thuộc Tính

Thuộc Tính kế thừa từ Model
  • Bảo Mật Plugin
    Đọc Song Song

    Đặt cấp độ chi tiết trên mô hình cho các trải nghiệm có bật phát trực tiếp cơ sở dữ liệu.

  • Kiểm soát hành vi phát trực tiếp mô hình trên Models khi bật phát trực tiếp instancia.

  • Đọc Song Song

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

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

    Tính năng chỉ dành cho biên tập viên được sử dụng để mở rộng mô hình xung quanh trục của nó. Việc đặt tính năng này sẽ di chuyển quy mô như thể Model/ScaleTo đã được gọi trên nó.

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

    Xác định nơi mà trục của một Model mà không có không có một bộ Model.PrimaryPart nằm.

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):()

    Bộ này đặt mô hình này là vĩnh viễn cho người chơi được chỉ định. ModelStreamingMode phải được đặt thành PersistentPerPlayer để hành vi được thay đổi là kết quả của việc thêm.

  • Trả về một mô tả về một khối lượng chứa tất cả các phần của một mô hình.

  • Trả về kích thước của hộp gắn kết nhỏ nhất chứa tất cả các BaseParts trong Model, cùng với Model.PrimaryPart nếu nó được đặt.

  • Trả lại tất cả các đối tượng Player được vật phẩm mô hình này lưu trữ.Hành vi thay đổi tùy thuộc vào việc phương pháp này được gọi từ một Script hoặc một LocalScript .

  • Trả về thước đo chính thống của mô hình, mặc định là 1 cho các mô hình được tạo mới và sẽ thay đổi khi nó được thu nhỏ qua Model/ScaleTo .

  • MoveTo(position : Vector3):()

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

  • RemovePersistentPlayer(playerInstance : Player):()

    Làm cho mô hình này không còn lưu trữ cho người chơi được chỉ định.ModelStreamingMode phải được đặt thành PersistentPerPlayer để hành vi được thay đổi là kết quả của việc loại bỏ.

  • ScaleTo(newScaleFactor : number):()

    Đặt 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 Instances con cháu sao cho có yếu tố thước đo tương đối với kích thước và vị trí ban đầu của chúng khi yếu tố thước đo là 1.

  • TranslateBy(delta : Vector3):()

    Thay đổi một Model bởi độ trừ Vector3 cho được, giữ nguyên hướng của mô hình.Nếu một BasePart hoặc Terrain đã tồn tại ở vị trí mới thì Model sẽ chồng lên đối tượng đã nói.

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 các BasePart được cho là đang chạm vào bất kỳ phần nào khác.Hai phần được coi là "chạm" nếu chúng nằm trong giới hạn khoảng cách, overlapIgnored .

Nếu không có bất kỳ phần nào được cung cấp, false được trả về.

Tham Số

partList: Instances

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

Giá Trị Mặc Định: ""
overlapIgnored: number

Ngưỡng chồng lấp phần trong đinh tán bị bỏ qua trước khi các phần được coi là tiếp xúc.

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

Lợi Nhuận

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

Mẫu mã

Khối mã bên dưới minh họa cách sử dụng WorldRoot:ArePartsTouchingOthers() để kiểm tra xem các bộ phận trong danh sách có chạm vào bất kỳ bộ phận nào trong không gian làm việc không có trong danh sách hay không.

Trước tiên, kịch bản tạo ra hai phần vuông chồng lấp 1 đinh tán, Part1Part2 .Sau đó, nó in giá trị được trả bởi ArePartsTouchingOthers() khi Part1 được chuyển trong partList tại ba giá trị chồng lấp khác nhau: 0 , 0.9991 .Lần đầu tiên hai lần ArePartsTouchingOthers() được gọi trả về false vì giá trị chồng lấp nhỏ hơn khoảng cách mà Part1 và Part2 chồng lấp.Cuộc gọi thứ ba trả về true vì giá trị chồng lấp bằng khoảng cách mà các bộ phận chồng lấp.

Kiểm tra các bộ phận tiếp xúc

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)) -- Đúng
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- Đúng
print(workspace:ArePartsTouchingOthers(partList, 1)) -- False

Blockcast

Ghi Song Song

Phát hình một khối hình dạng theo một hướng nhất định và trả về va chạm đầu tiên với một tế bào BasePart hoặc Terrain .Điều này tương tự như cách WorldRoot:Raycast() phát sóng một đường tròn trong một hướng để tìm một va chạm, nhưng nó sử dụng một hình dạng 3D thay vì một tia.

Không giống như WorldRoot:GetPartsInPart() , phương pháp này không phát hiện BaseParts rằng ban đầu không giao nhau hình dạng.

Nếu một hit được phát hiện, một RaycastResult được trả về chứa thông tin hit.Thuộc tính Distance đại diện cho khoảng cách mà hình dạng phải di chuyển để tìm một hit, và thuộc tính Position đại diện cho điểm giao lộ gây ra hit.

Phương pháp này ném lỗi nếu nó được truyền không hợp lệ CFrame , kích thước hoặc đầu vào hướng.

Tham Số

cframe: CFrame

Vị trí ban đầu và độ xoay của hình dạng khối ném.

Giá Trị Mặc Định: ""
size: Vector3

Kích thước của khối phát trong đinh tán. Kích thước tối đa là 512 đinh tán.

Giá Trị Mặc Định: ""
direction: Vector3

Hướng của shapecast, với độ lớn đại diện cho khoảng cách tối đa mà hình dạng có thể di chuyển. Khoảng cách tối đa là 1024 đinh tán.

Giá Trị Mặc Định: ""
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ó ô đủ điều kiện BasePart hoặc Terrain được đánh.

Mẫu mã

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

()

Chức năng này di chuyển một bảng của BaseParts sang một bảng của CFrames mà không cần bắn sự kiện mặc định Changed mặc định.Điều này cung cấp một cách nhanh chóng để di chuyển một lượng lớn các bộ phận, bởi vì bạn không phải trả chi phí cho các bộ sưu tập tài sản riêng biệt cho mỗi bộ phận.

Các tham số thứ ba cho phép bạn tối ưu hóa thêm hoạt động di chuyển.Mặc định, sự kiện Changed của mỗi phần bắt lửa cho Position , OrientationCFrame .Tuy nhiên, nếu bạn xác định FireCFrameChanged như là tham số thứ ba, chỉ sự kiện Changed cho thuộc tính CFrame sẽ bắn.

Lưu ý 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 phần di chuyển là một chai cổ trong mã của bạn.Chỉ cần đặt thuộc tính CFrame của các bộ phận riêng lẻ và mô hình hàn là nhanh đủ trong hầu hết các trường hợp.

Tham Số

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

Lợi Nhuận

()

GetPartBoundsInBox

Instances
Ghi Song Song

WorldRoot:GetPartBoundsInBox() trả về một array các bộ phận có hộp giới hạn chồng lên một hộp có âm lượng được mô tả bằng cách sử dụng trung tâm được cung cấp ( CFrame ) và kích thước ( Vector3 ).

Như đã nhấn mạnh, phương pháp truy vấn không gian này hiệu quả xem xét khối lượng hộp gắn kết của các bộ phận chứ không phải khối lượng thực sự chiếm của chúng.Điều này có thể quan trọng khi xem xét xi lanh, cầu, liên minh và MeshParts những thứ có hình dạng không khối.Đối với các trường hợp mà độ chính xác đặc biệt quan trọng, hãy sử dụng WorldRoot:GetPartsInPart() thay vào đó, hoặc lọc thêm kết quả của phương pháp này bởi chính bạn.

Phương pháp này sử dụng một đối tượng để mô tả các phần có thể tái sử dụng trong truy vấn không gian, chẳng hạn như một danh sách bao gồm hoặc loại trừ, số lượng phần tối đa để truy vấn, những gì nhóm va chạm để sử dụng và liệu truy vấn có ưu tiên giá trị của phần chồng lấp trên giá trị của nó hay không.

Tham Số

cframe: CFrame

Vị trí của trung tâm của khối lượng hộp được truy vấn.

Giá Trị Mặc Định: ""
size: Vector3

Kích thước của khối lượng hộp được truy vấn.

Giá Trị Mặc Định: ""
overlapParams: OverlapParams

Bao gồm các phần có thể tái sử dụng 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 mảng của BaseParts mà phù hợp với truy vấn không gian.

GetPartBoundsInRadius

Instances
Ghi Song Song

WorldRoot:GetPartBoundsInRadius() trả về một mảng các bộ phận mà hộp giới hạn của chúng chồng lên một cạnh tròn có khối lượng được mô tả bằng cách sử dụng trung tâm được cung cấp ( Vector3 ) và bán kính (number).

Như đã nhấn mạnh, phương pháp truy vấn không gian này hiệu quả xem xét khối lượng hộp gắn kết của các bộ phận chứ không phải khối lượng thực sự chiếm của chúng.Điều này có thể quan trọng khi xem xét xi lanh, cầu, liên minh và MeshParts những thứ có hình dạng không khối.Đối với các trường hợp mà độ chính xác đặc biệt quan trọng, hãy sử dụng WorldRoot:GetPartsInPart() thay vào đó, hoặc lọc thêm kết quả của phương pháp này bởi chính bạn.

Phương pháp này sử dụng một đối tượng để mô tả các phần có thể tái sử dụng trong truy vấn không gian, chẳng hạn như một danh sách bao gồm hoặc loại trừ, số lượng phần tối đa để truy vấn, những gì nhóm va chạm để sử dụng và liệu truy vấn có ưu tiên giá trị của phần chồng lấp trên giá trị của nó hay không.

Tham Số

position: Vector3

Vị trí của trung tâm của khối lượng cạnh tròn được truy vấn.

Giá Trị Mặc Định: ""
radius: number

Bán kính của khối lượng cạnh tròn được truy vấn.

Giá Trị Mặc Định: ""
overlapParams: OverlapParams

Bao gồm các phần có thể tái sử dụng 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 mảng của BaseParts mà phù hợp với truy vấn không gian.

GetPartsInPart

Instances
Ghi Song Song

WorldRoot:GetPartsInPart() trả về một array các bộ phận có không gian chiếm chỗ được chia sẻ với bộ phận được cung cấp (phải tồn tại trong cùng WorldRoot như các bộ phận được truy vấn).Phương pháp này có thể được sử dụng thay cho BasePart:GetTouchingParts() và thường là lựa chọn tốt hơn.

Như đã lưu ý, phương pháp truy vấn không gian này xem xét chính xác khối lượng được chiếm bởi phần được cung cấp bằng cách kiểm tra va chạm định hình đầy đủ.Ví dụ, một phần lõm/trống sẽ không phù hợp với các phần được truy vấn trong nó trừ khi chúng thực sự chồng lấp/chạm vào một phần như vậy.Đối với các khối lượng đơn giản hơn, hãy xem xét sử dụng WorldRoot:GetPartBoundsInBox() hoặc WorldRoot:GetPartBoundsInRadius(), vì chúng ít chính xác hơn nhưng thực hiện hiệu quả hơn.

Phương pháp này sử dụng một đối tượng để mô tả các phần có thể tái sử dụng trong truy vấn không gian, chẳng hạn như một danh sách bao gồm hoặc loại trừ, số lượng phần tối đa để truy vấn, những gì nhóm va chạm để sử dụng và liệu truy vấn có ưu tiên giá trị của phần chồng lấp trên giá trị của nó hay không.

Tham Số

part: BasePart

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

Giá Trị Mặc Định: ""
overlapParams: OverlapParams

Bao gồm các phần có thể tái sử dụng 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 mảng của BaseParts mà phù hợp với truy vấn không gian.

IKMoveTo

()
Bảo Mật Plugin

Chức năng này di chuyển phần được chỉ định đến vị trí được chỉ định thông qua kinh tế đảo ngược thay vì di chuyển trực tiếp ở đó, để đảm bảo các khớp, constraints hoặc va chạm mà phần tham gia vào vẫn được hài lòng về mặt vật lý.Hiện tại chức năng này chỉ có sẵn trong Studio đến plugins, vì nó hiện đang xung đột với vật lý của một trò chơi đang chạy.

Biến độ cứng là một số từ 0 đến 1 để xác định mức độ tấn công để phù hợp với vị trí của phần với vị trí của mục tiêu CFrame. Độ cứng quay là một số từ 0 đến 1 chỉ định mức độ xâm lược để phù hợp với sự xoay của phần với phần xoay của mục tiêu CFrame.

Ví dụ:

  • Nếu độ cứng dịch và độ cứng quay cả hai bằng nhau là 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 hạn chế vật lý trên nó.
  • Nếu độ cứng dịch và độ cứng xoay cả hai bằng nhau là 0.5, thì phần sẽ cố gắng di chuyển chính xác đến CFrame mục tiêu, nhưng có thể bị đẩy ra khỏi đường bởi các hạn chế vật lý trên nó.
  • Nếu độ cứng dịch và độ cứng quay bằng nhau là 0, thì CFrame mục tiêu sẽ bị bỏ qua và các hạn chế vật lý sẽ được giải quyết cho đối tượng ở vị trí nó đã ở.

Tham Số

part: BasePart

Phần được di chuyển.

Giá Trị Mặc Định: ""
target: CFrame

Vị trí để di chuyển phần được chỉ định.

Giá Trị Mặc Định: ""
translateStiffness: number

Một số từ 0 đến 1 xác định mức độ hung hăng mà phải phù hợp vị trí của phần với 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 xác định mức độ xâm lược để phù hợp với phần xoay của mục tiêu với phần xoay của 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 đối tượng nên bị ảnh hưởng bởi độ phân giải vật lý.

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

Lợi Nhuận

()
Ghi Song Song

Phát ra một tia sử dụng một nguồn, hướng và tùy chọn RaycastParams .Nếu nó tìm thấy một tế bào hợp lệ BasePart hoặc Terrain , một RaycastResult được trả về chứa kết quả của hoạt động.Nếu không có đối tượng RaycastParams được cung cấp, các giá trị mặc định sẽ được sử dụng (tất cả các bộ phận được xem xét và Terrain nước không bị bỏ qua).

Lưu ý rằng chiều dài (mức độ) của vector hướng là quan trọng, vì các đối tượng/địa hình cách xa hơn chiều dài của nó sẽ không được kiểm tra.Nếu bạn đang sử dụng một CFrame để giúp tạo các thành phần của tia, hãy xem xét sử dụng CFrame.LookVector làm vectơ hướng và nhân nó với chiều dài mong muốn như được hiển thị trong ví dụ bên dưới.Chiều dài tối đa của vectơ hướng là 15,000 đinh tán.

Phương pháp này không sử dụng một đối tượng nhưng thành phần nguồn gốc và hướng có thể được lấy từ và .

Tham Số

origin: Vector3

Điểm nguồn của tia.

Giá Trị Mặc Định: ""
direction: Vector3

Vectơ hướng của tia. Lưu ý rằng chiều dài của vector này là quan trọng, bởi vì các bộ phận/địa hình cách xa hơn chiều dài của nó sẽ không được kiểm tra.

Giá Trị Mặc Định: ""
raycastParams: RaycastParams

Một đối tượng được sử dụng để xác định điều kiện đủ điều kiệ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 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 phát tia, hoặc nil nếu không có tế bào đủ điều kiện BasePart hoặc Terrain bị đánh.

Mẫu mã

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

Tham Số

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

Lợi Nhuận

Spherecast

Ghi Song Song

Thực hiện hình dạng cầu tròn theo một hướng nhất định và trả lại va chạm đầu tiên với một tế bào BasePart hoặc Terrain .Điều này tương tự như cách WorldRoot:Raycast() phát sóng một đường tròn trong một hướng để tìm một va chạm, nhưng nó sử dụng một hình dạng 3D thay vì một tia.

Không giống như WorldRoot:GetPartsInPart() , phương pháp này không phát hiện BaseParts rằng ban đầu không giao nhau hình dạng.

Nếu một hit được phát hiện, một RaycastResult được trả về chứa thông tin hit.Thuộc tính Distance đại diện cho khoảng cách mà hình dạng phải di chuyển để tìm một hit, và thuộc tính Position đại diện cho điểm giao lộ gây ra hit.

Phương thức này ném lỗi nếu nó được truyền đầu vào bán kính hoặc hướng không hợp lệ.

Tham Số

position: Vector3

Vị trí ban đầu của hình cầu phẳng.

Giá Trị Mặc Định: ""
radius: number

Bán kính của hình cầu phát trong đinh tán. Bán kính tối đa là 256 đinh tán.

Giá Trị Mặc Định: ""
direction: Vector3

Hướng của shapecast, với độ lớn đại diện cho khoảng cách tối đa mà hình dạng có thể di chuyển. Khoảng cách tối đa là 1024 đinh tán.

Giá Trị Mặc Định: ""
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ó ô đủ điều kiện BasePart hoặc Terrain được đánh.

Mẫu mã

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

()
Bảo Mật Plugin

Tiến bộ hóa mô phỏng cho các bộ phận trên thế giới dựa trên tăng thời gian được xác định và một bộ tùy chọn BasePart .Khi một bộ phận được định nghĩa, chỉ những phần này sẽ được mô phỏng và tất cả các phần khác trên thế giới sẽ được xử lý như neo.Khi các tham số này bị bỏ lượt, tất cả các bộ phận trên thế giới sẽ được bao gồm trong phần mô phỏng.Tăng thời gian được chỉ định có thể là bất kỳ số dương nào, với các giá trị lớn hơn tăng thời gian chạy của chức năng.Tùy thuộc vào giá trị tăng thời gian, hệ thống vật lý có thể chia nó thành nhiều bước riêng biệt để duy trì độ chính xác và ổn định của mô phỏng.Ngay cả khi chức năng thực hiện nhiều bước thay thế, kết quả của mô phỏng chỉ được xem một lần khi chức năng hoàn thành.Để hiển thị các bước cụ thể của một mô phỏng, chức năng có thể được gọi một lần mỗi RenderStep thông qua sự kiện RunService.RenderStepped.

Tham Số

dt: number

Số thời gian sẽ được mô phỏng. Các tham số 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 chức năng này.

Giá Trị Mặc Định: ""
parts: Instances

Mảng tùy chọn các bộ phận sẽ được mô phỏng. Bộ này phải chứa các ví dụ là của loại BasePart ; bất kỳ loại khác sẽ bị bỏ qua.

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

Lợi Nhuận

()

Mẫu mã

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)

Sự Kiện