WorldRoot
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Kelas dasar ini memberikan API untuk setiap instans yang dimaksudkan untuk menangani 3D spatial queries dan simulasi, seperti Workspace dan WorldModel .
Rangkuman
Properti
Properti diwarisi dari ModelTetapkan tingkat rincian pada model untuk pengalaman dengan streaming instans.
Mengontrol perilaku streaming model pada Models ketika mode instans Streaming diaktifkan.
Bagian utama dari Model , atau nil jika tidak secara eksplisit atur.
Properti hanya editor digunakan untuk menyesuaikan model di sekitar pivotnya. Mengatur properti ini akan menghubungkan skala seperti Model/ScaleTo yang dipanggil di atasnya.
Menentukan di mana pivot dari Model yang tidak memiliki set Model.PrimaryPart berlokasi.
Metode
Mengembalikan benar jika salah satu dari BasePart yang diberikan menyentuh bagian lain.
Mengubah bentuk blok dalam arah tertentu dan mengembalikan RaycastResult jika bentuk menghantam sel BasePart atau Terrain.
Mengembalikan daftar bagian yang cu batas kotak saling bertabrakan.
Mengembalikan beberapa bagian yang cu memiliki kotak pembatas menggabungkan satu kotak.
Mengembalikan array dari bagian-bagian yang memiliki ruang yang dibagikan dengan bagian yang diberikan.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Pindahkan bagian yang ditentukan ke lokasi yang ditentukan melalui kinematik terbalik daripada menggerakkannya langsung ke sana, untuk menjamin bahwa joint, kendali, atau kolisi apa pun yang diambil bagian itu tetap fisik yang puas.
Menggunakan sinar menggunakan asal, arah, dan opsi RaycastParams , kemudian mengembalikan RaycastResult jika objek atau terreno yang memenuhi persyaratan menggunakan sinar.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Mengembalikan bentuk bulat dalam arah yang ditentukan dan menghasilkan RaycastResult jika bentuk menghantam sel BasePart atau Terrain.
Meningkatkan simulasi untuk bagian di dunia ke depan berdasarkan peningkatan waktu tertentu dan set pilihan dari BaseParts .
Tetapkan model ini menjadi persisten untuk pemain yang ditentukan. Model.ModelStreamingMode harus diatur menjadi PersistenPerPemain untuk perilaku berubah sebagai hasil tambahan.
Mengembalikan deskripsi volume yang berisi semua bagian dari Model.
Mengembalikan ukuran kotak pembatas terkecil yang berisi semua BaseParts dalam Model, diatur dengan Model.PrimaryPart jika diatur.
Mengembalikan semua objek Player yang bertahan untuk model objek ini. Perilaku bervariasi tergantung pada apakah metode ini dianggap dari Script atau LocalScript .
Mengembalikan skala kanonik model, yang default ke 1 untuk model baru yang dibuat dan akan berubah saat skalanya melalui Model/ScaleTo .
Pindahkan PrimaryPart ke posisi yang diberikan. Jika bagian utama tidak ditentukan, bagian akar model akan digunakan.
Membuat model ini tidak lagi bertahan untuk pemain tertentu. Model.ModelStreamingMode harus diatur menjadi PersistentPerPlayer untuk perilaku berubah sebagai hasil dari penghapusan.
Tetapkan skala faktor model, menyesuaikan ukuran dan lokasi semua Instans yang turun sehingga mereka memiliki skala faktor relatif terhadap ukuran dan lokasi awal mereka ketika skala faktor adalah 1.
Bergeser sebuah Model olehOffset yang diberikan Vector3 , menjaga orientasi model. Jika BasePart atau 1> Class.Terrain1> sudah ada di posisi baru maka 4> Class.Model4> akan menggeser objek yang dikatakan.
Mendapatkan pivot dari Class.PVInstance .
Mengubah PVInstance bersama dengan semua anaknya PVInstances sehingga pivot sekarang berada di CFrame yang ditentukan.
Properti
Metode
ArePartsTouchingOthers
ApakahPartTouchingOthers menghasilkan true jika setidaknya satu dari BasePart yang diberikan berada di dekat bagian lain. Dua bagian dianggap "ber触摸" jika mereka berada dalam batas distribusi, overlapIgnored .
Jika tidak ada bagian yang disediakan, false dikembalikan.
Parameter
Daftar periksa bagian untuk melihat apakah bagian dalam daftar menyentuh bagian yang tidak dalam daftar.
Threshold persentase overlapping dalam stud yang diabaikan sebelum bagian dianggap ber触れ.
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)) -- True
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- True
print(workspace:ArePartsTouchingOthers(partList, 1)) -- False
Blockcast
Mengubah bentuk blok dalam arah yang diberikan dan mengembalikan kesalahan pertama dengan sel BasePart atau Terrain. Ini mirip dengan cara WorldRoot:Raycast() casts sebuah sinar lurus dalam arah untuk menemukan kesalahan, tetapi menggunakan bentuk 3D alih-alih sinar.
Tidak seperti WorldRoot:GetPartsInPart(), metode ini tidak mendeteksi BaseParts yang semua berdasarkan bentuk.
Jika terdeteksi pukulan, RaycastResult dikembalikan dengan mengandung informasi pukulan. Propinsi Distance mewakili jarak yang harus ditempuh untuk menemukan pukulan, dan propinsi Position mewakili sudut perspektif yang menyebabkan pukul
Metode ini menghasilkan kesalahan jika dilewati tidak valid CFrame , ukuran, atau masukan arah.
Parameter
Posisi awal dan rotasi dari bentuk blok cast.
Ukuran balok pembatuhan dalam studs. Ukuran maksimum adalah 512 studs.
Arah dari shapecast, dengan magnitudo mewakili jarak maksimum yang dapat ditempuh oleh bentuk. Jarak maksimum adalah 1024 studs.
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
Fungsi ini mengubah tabel dari BaseParts ke tabel dari CFrames tanpa harus mengeksekusi property default Changed untuk setiap bagian. Ini memberikan cara yang sangat cepat untuk mengubah banyak bagian, karena Anda tidak perlu menghost pengaturan propiet
Argumen ketiga memungkinkan Anda untuk meningkatkan operasi gerakan lebih lanjut. Secara default, acara Class.Object.Changed|Changed
Catat bahwa Anda hanya harus menggunakan fungsi ini jika Anda yakin bahwa gerakan bagian adalah botol pada kode Anda. Cukup atur CFrame property dari setiap bagian dan model baja yang dibungkus dalam kebanyakan kasus.
Parameter
Memberikan nilai
GetPartBoundsInBox
WorldRoot:GetPartBoundsInBox() mengembalikan matriks yang berisi bagian-bagian yang terbatas kotak-kotaknya menggabung kotak yang memiliki volume dijelaskan menggunakan pusat yang diberikan ( CFrame ) dan ukuran ( 0> Datatype.Vector30> ).
Seperti disoroti, metode pengambilan sederhana ini secara efisien mempertimbangkan volume bagian yang terikat bukanlah volume aktual mereka. Ini mungkin penting ketika mempertimbangkan silinder, bola, persyaratan, dan MeshParts yang memiliki bentuk non-blok. Untuk kasus di mana ketepatan sangat penting, gunakan
Metode ini menggunakan objek OverlapParams untuk menggambarkan bagian yang dapat diulang dari pencarian ruang, seperti daftar включение atau eksklusi, jumlah maksimum bagian untuk dipencari, apa grup kollision untuk digunakan, dan apakah query menguntungkan
Parameter
Lokasi pusat volume kotak yang diberikan untuk diambil.
Ukuran volume kotak yang diberikan untuk diunduh.
Berisi bagian yang dapat diulang dari parameter pencarian ruang.
Memberikan nilai
Sebuah matriks BaseParts yang cocok dengan pencarian ruang.
GetPartBoundsInRadius
WorldRoot:GetPartBoundsInRadius() mengembalikan array dari bagian yang cuaca panjang persamaan persamaan bola yang menggabungkan volume yang dijelaskan menggunakan pusat ( Vector3 ) dan radius (number).
Seperti disoroti, metode pengambilan sederhana ini secara efisien mempertimbangkan volume bagian yang terikat bukanlah volume aktual mereka. Ini mungkin penting ketika mempertimbangkan silinder, bola, persyaratan, dan MeshParts yang memiliki bentuk non-blok. Untuk kasus di mana ketepatan sangat penting, gunakan
Metode ini menggunakan objek OverlapParams untuk menggambarkan bagian yang dapat diulang dari pencarian ruang, seperti daftar включение atau eksklusi, jumlah maksimum bagian untuk dipencari, apa grup kollision untuk digunakan, dan apakah query menguntungkan
Parameter
Lokasi pusat volume kugel yang diberikan untuk dipertanyakan.
Radius dari volume kugel yang diberikan untuk dipertanyakan.
Berisi bagian yang dapat diulang dari parameter pencarian ruang.
Memberikan nilai
Sebuah matriks BaseParts yang cocok dengan pencarian ruang.
GetPartsInPart
WorldRoot:GetPartsInPart() mengembalikan matriksi bagian yang diisi dengan bagian yang diberikan (yang harus ada dalam WorldRoot yang sama dengan bagian yang diminta). Metode ini dapat digunakan di tempat Class.BasePart:GetTouchingParts() dan biasanya lebih baik pilihan.
Seperti yang dinyatakan, metode pengambilan periksaruang ini menganggap volume yang tepat yang ditempati oleh bagian yang diberikan menggunakan pemeriksaan tabrakan geometrik penuh. Sebagai contoh, bagian konvek/holeh tidak akan cocok dengan bagian yang di
Metode ini menggunakan objek OverlapParams untuk menggambarkan bagian yang dapat diulang dari pencarian ruang, seperti daftar включение atau eksklusi, jumlah maksimum bagian untuk dipencari, apa grup kollision untuk digunakan, dan apakah query menguntungkan
Parameter
Bagian cuaca yang akan diperiksa terhadap bagian lain.
Berisi bagian yang dapat diulang dari parameter pencarian ruang.
Memberikan nilai
Sebuah matriks BaseParts yang cocok dengan pencarian ruang.
IKMoveTo
Fungsi ini pindahkan bagian yang ditentukan ke lokasi yang ditentukan melalui kinematika terbalik daripada menempatkannya secara langsung, untuk menjamin kesatuan apa pun, constraints , atau kolisi yang bagian itu berpartisipasi tetap terasa fisik. Saat ini fungsi ini hanya tersedia di Studio untuk Class.Plugin
Terjemahkan ketegasan adalah angka antara 0 dan 1 yang menentukan seberapa agresif untuk mencocokkan posisi bagian dengan posisi bagian target CFrame. Terjemahkan ketegasan adalah angka antara 0 dan 1 yang menentukan seberapa agresif untuk mencocokkan rotasi bagian dengan rotasi bagian target CFrame.
Sebagai contoh:
- Jika ketahanan terjemahan dan rotasi ketahanan sama dengan 1, maka bagian akan diangkat persis ke target CFrame terlepas dari apa batasan fisik yang ada di atasnya.
- Jika ketahanan terjemahan dan rotasi ketahanan sama dengan 0,5, maka bagian akan mencoba untuk pindah ke persis target CFrame, tetapi mungkin dipusulkan keluar dari jalan oleh kendala fisik di atasnya.
- Jika ketahanan terjemahan dan rotasi ketahanan sama, maka target CFrame akan diabaikan dan kendala fisik akan dipecahkan untuk objek di posisi di mana itu berada.
Parameter
Bagian yang diangkat.
Lokasi untuk pindahkan bagian yang ditentukan.
Sebuah nomor antara 0 dan 1 yang menentukan seberapa agresif untuk mencocokkan posisi bagian dengan posisi bagian target CFrame .
Sebuah nomor antara 0 dan 1 yang menentukan seberapa agresif untuk mencocokkan rotasi bagian dengan bagian rotasi target CFrame .
Memungkinkan Anda untuk menentukan objek mana yang harus dipengaruhi oleh resolusi fisik.
Memberikan nilai
Raycast
Menggunakan sinar menggunakan asal, arah, dan opsi RaycastParams . Jika itu menemukan sel BasePart atau Terrain yang memenuhi k
Catat bahwa panjang (magnitudo) dari vector arah penting, karena objek / terreno yang lebih jauh daripada panjangnya tidak akan diuji. Jika Anda menggunakan CFrame untuk membantu menciptakan komponen ray, pertimbangkan menggunakan Datatype
Metode ini tidak menggunakan objek Ray, tetapi komponen asal dan arahnya dapat dipinjam dari Ray.Origin dan 1>Datatype.Ray.Direction1>.
Parameter
Poin asal dari sinar.
Vektor arah dari ray. Catat bahwa panjangnya vektor ini penting, karena bagian / terreno lebih jauh daripada panjangnya tidak akan diuji.
Objek yang digunakan untuk menentukan kelayakan pukulan dalam operasi raycast. Jika tidak diberikan, nilai default digunakan di mana semua bagian dianggap dan Terrain air tidak diabaikan.
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
Mengkastilkan bentuk kubus di arah yang diberikan dan mengembalikan kesalahan pertama dengan BasePart atau Terrain sel. Ini mirip dengan cara WorldRoot:Raycast() mengkastilkan sinar lurus di arah untuk menemukan kesalahan, tetapi menggunakan bentuk 3D alih-alih sinar.
Tidak seperti WorldRoot:GetPartsInPart(), metode ini tidak mendeteksi BaseParts yang semua berdasarkan bentuk.
Jika terdeteksi pukulan, RaycastResult dikembalikan dengan mengandung informasi pukulan. Propinsi Distance mewakili jarak yang harus ditempuh untuk menemukan pukulan, dan propinsi Position mewakili sudut perspektif yang menyebabkan pukul
Metode ini menghasilkan kesalahan jika diberikan masukan radius atau arah yang tidak valid.
Parameter
Posisi awal dari bentuk kastil.
Radius dari bentuk kubus cast dalam studs. Radius maksimum adalah 256 studs.
Arah dari shapecast, dengan magnitudo mewakili jarak maksimum yang dapat ditempuh oleh bentuk. Jarak maksimum adalah 1024 studs.
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
Meningkatkan simulasi untuk bagian di dunia ke depan berdasarkan peningkatan waktu t
Parameter
Jumlah waktu yang akan di simulasi. Anggota ini harus menjadi angka positif. Nilai yang lebih besar akan meningkatkan waktu pemrosesan fungsi ini.
Array opcional dari bagian yang akan di simulasi. Set ini harus berisi instans yang bertipe BasePart ; set jenis lainnya akan diabaikan.
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)