WorldRoot
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Kelas dasar ini menyediakan API untuk instance apa pun yang dimaksudkan untuk menangani pencarian dan simulasi spasial 3D, seperti Workspace dan WorldModel.
Rangkuman
Properti
Properti diwarisi dari ModelProperti
Mengatur tingkat rincian pada model untuk pengalaman dengan streaming instansi diaktifkan.
Mengontrol perilaku streaming model di Models ketika streaming instansi diaktifkan.
Bagian utama dari Model , atau nil jika tidak secara eksplisit ditetapkan.
Properti hanya editor yang digunakan untuk memperluas model di sekitar titik pivotnya. Mengatur properti ini akan memindahkan skala seolah-olah Model/ScaleTo dipanggil di atasnya.
Menentukan di mana titik pivot dari yang tidak memiliki set terletak.
Properti
Metode
Kembalikan benar jika salah satu dari yang diberikan BasePart menyentuh bagian lain.
Memancarkan bentuk blok dalam arah tertentu dan kembalikan RaycastResult jika bentuk memukul sel BasePart atau Terrain .
Kembalikan array bagian yang mana kotak batasnya tumpang tindih pada kotak tertentu.
Kembalikan array bagian yang mana kotak batasnya tumpang tindih pada bidang tertentu.
Kembalikan array bagian yang ruangnya dibagikan dengan bagian yang diberikan.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):()
Pindahkan bagian yang ditentukan ke lokasi yang ditentukan melalui kinematika terbalik daripada langsung memindahkannya ke sana, untuk memastikan setiap persyaratan, batasan, atau tabrakan yang diikuti bagian tersebut tetap puas secara fisik.
Melemparkan sinar menggunakan asal, arah, dan opsional RaycastParams , kemudian mengembalikan RaycastResult jika objek atau wilayah yang memenuhi syarat berinterseks dengan sinar.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Memancarkan bentuk bola di arah tertentu dan kembalikan RaycastResult jika bentuk memukul sel BasePart atau Terrain .
Memajukan simulasi untuk bagian di dunia ke depan berdasarkan peningkatan waktu yang ditentukan dan satu set opsi BaseParts .
Metode
Atur model ini menjadi permanen untuk pemain yang ditentukan. ModelStreamingMode harus diatur menjadi PersistentPerPlayer agar perilaku dapat diubah sebagai hasil dari penambahan.
Kembalikan deskripsi volume yang berisi semua bagian dari Model.
Kembalikan ukuran kotak batas terkecil yang berisi semua BaseParts di dalam Model, sesuai dengan Model.PrimaryPart jika diatur.
Kembalikan semua objek Player yang persisten untuk objek model ini.Perilaku bervariasi tergantung pada apakah metode ini dipanggil dari Script atau LocalScript.
Kembalikan skala kanonik model, yang defaultnya adalah 1 untuk model yang baru dibuat dan akan berubah saat skalanya diubah melalui Model/ScaleTo .
Pindahkan PrimaryPart ke posisi yang diberikan. Jika bagian utama belum ditentukan, bagian akar model akan digunakan.
Membuat model ini tidak lagi permanen untuk pemain yang ditentukan. ModelStreamingMode harus diatur ke PersistentPerPlayer agar perilaku berubah sebagai hasil dari penghapusan.
Mengatur faktor skala model, menyesuaikan ukuran dan lokasi semua Instans anak sehingga mereka memiliki faktor skala relatif terhadap ukuran dan lokasi awal mereka saat faktor skala adalah 1.
Bergeser ke Model dengan offset yang diberikan Vector3 , menyimpan orientasi model.Jika lain BasePart atau Terrain sudah ada di posisi baru maka Model akan tumpang tindih dengan objek yang dikatakan.
Metode
Mendapatkan pivot dari PVInstance .
Mengubah PVInstance bersama dengan semua keturunannya PVInstances sehingga pivot sekarang terletak di lokasi yang ditentukan CFrame .
Properti
Metode
ArePartsTouchingOthers
Parameter
Memberikan nilai
Contoh Kode
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)) -- Benar
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- Benar
print(workspace:ArePartsTouchingOthers(partList, 1)) -- False
Blockcast
Parameter
Memberikan nilai
Contoh Kode
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
Parameter
Memberikan nilai
GetPartBoundsInBox
Parameter
Memberikan nilai
GetPartBoundsInRadius
Parameter
Memberikan nilai
GetPartsInPart
Parameter
Memberikan nilai
IKMoveTo
Parameter
Memberikan nilai
Raycast
Parameter
Memberikan nilai
Contoh Kode
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
Parameter
Memberikan nilai
Spherecast
Parameter
Memberikan nilai
Contoh Kode
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
Parameter
Memberikan nilai
Contoh Kode
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)