WorldRoot
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Bu temel sınıf, 3D bozulma ve simülasyon işlemleri için herhangi bir durum için bir API sağlar, örneğin Workspace ve WorldModel .
Özet
Özellikler
Şuradan alınan Özellikler: ModelEtkisizleştirilmiş senaryolarla ilgili deneyimler için modeldeki ayrıntı seviyesini ayarlar.
İstemci yayınlanma davranışını Models üzerinde kontrol eder.
Class.Model veya nil , aksi belirtilmediyse özelliklerinin temel kısmı.
Modell'in etrafındaki çizgiyi ölçmek için kullanılan sadece modeller için özellik. Bu özelliği ayarlamak, ölçeği Model/ScaleTo çağırdığı gibi hareket ettirecektir.
Bir Model ın pivot'unun nerede bulunduğunu belirler. Bu, bir Class.Model ın pivot'unun bir seti olmadığını gösterir.
Yöntemler
Class.BasePart ile herhangi bir kısmın başka bir kısmına dokunması durumunda geri döndürür.
Belirli bir yöne blok şeklini oluşturur ve şekil bir RaycastResult veya BasePart hücresine ulaşırsa bir Terrain döndürür.
Bir bağlayıcı kutusu ile bir belirli kutun üstünde çakışan bir dizi parçayı döndürür.
Bir bağlayıcı kutusu ile belirli bir küreyle çakışan bir dizi parçayı döndürür.
Verilen parçanın alanını paylaştığı bir dizi parçayı döndürür.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Hareketi, hareket etmek yerine ters kinetik olarak belirli yere taşır, böylece herhangi bir bağlantı, kısıtlayıcı veya çarpışma, parçanın katılımını garanti etmek için fizyiksel olarak tatmin kalmasını sağlar.
Bir yayı oluşturmak için bir kaynağı, yönü veya seçional RaycastParams kullanır, ardından bir uygun olay veya yer iletirse RaycastResult döndürür.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Belirli bir yöne küre şeklini oluşturur ve şekil bir RaycastResult veya bir BasePart hücresine vurursa bir Terrain döndürür.
Dünyadaki parçalar için simülasyonu öngörülen bir zamana veya BaseParts gibi seçenekli bir sete dayanarak geliştirir.
Bu modeli belirli oyuncunun için kalıcı olarak tutmak için ayarlar. Model.ModelStreamingMode eklenen davranışın sonucu olarak PersistentPerPlayer olarak ayarlanmalıdır.
Bir Model'in tüm parçalarını içeren bir hacimin açıklamasını iade eder.
Class.BasePart|BaseParts tüm Model ile aynıdır. Model.PrimaryPart ile aynıdır.
Bu model objesi için persistanslı olan tüm Player nesneleri iade eder. Davranış, bu yöntemin bir Script veya bir LocalScript から çekildiğine bağlı olarak değişir.
Yeni oluşturulan modeller için varsayılan modelin kanal ölçeğini iade eder ve Model/ScaleTo aracılığıyla ölçeklenir.
Class.Model.PrimaryPart|PrimaryPartı verilen pozisyona hareket ettirir. Bir ilk parça belirtilmediyse, modelin kök parçası kullanılır.
Bu model artık belirli oyuncunun için sürükleyici değil. Model.ModelStreamingMode değerini PersistentPerPlayer olarak ayarlanmalıdır, böylece eylemin kaldırma sonucu olarak değiştirilmesi gerekir.
Modelin ölçek faktörünü ayarlar, böylece ölçek faktörü 1 olduğunda tüm yok edici Instanstanların boyut ve konumlarının ölçek faktörüyle ilgili olarak kendi başlangıç boyutları ve yerleriyle ölçek faktörüne kadar kendi başına sahip olur.
Şekillendiriciyi Model ile bir Vector3 ofseti arttırır, modelin yönünü korur. Eğer bir başka BasePart veya 2> Class.Terrain2> zaten mevcutsa, 5> Class.Model5> ile şekillendiriciyi çakal
Bir PVInstance 'nin pivot'unu alır.
Tüm ataları ile birlikte PVInstance şeklini alır, böylece merkez noktası artık belirlenen PVInstances ile bulunur.
Özellikler
Yöntemler
ArePartsTouchingOthers
ArePartsTouchingOthers BasePart ile en az bir kere başka bir parçaya dokunulduğunu gösterir. overlapIgnored iki parça "dokunma" olarak kabul edilir 0>ArePartsTouchingOthers0> Class.BasePart ile en az bir kere başka bir parçaya dokunulduğunu gösterir. dokunma iki
Eğer kısım sağlanmazsa, false döndürülür.
Parametreler
Listedeki parçaların listede olup olmadığını görmek için bir liste checkleri.
Parçalar dokunulduğu düşünülmeden önce parçaların çakışma eşik değerleri.
Dönüşler
Doğrudur, eğer parts``partList içinde herhangi bir parçaya dokunulduysa (parçalar <partList içinde değilse). Eğer bir parça geçilmiyorsa yanlış.
Kod Örnekleri
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
Bir blok şeklini belirli bir yöne yerleştirir ve ilk çarpışmayı bir BasePart veya bir Terrain hücresiyle ilk çarpışmayı gerçekleştirir. Bu, bir WorldRoot:Raycast() ile bir lineer ray yerleştirirken kullanılan şekillere
Class.WorldRoot:GetPartsInPart() , şeklin şekillenmesini önce tespit etmez.
Bir çarpışma tespit edildiğinde, bir RaycastResult döndürülür ve çarpışma bilgisi içerir. Distance özelliği, şeklin bir çarpışma için katlanması gereken mesafeyi temsil eder ve Position özelliğ
Bu yöntem geçersiz CFrame , büyüklük veya yön girişleri için bir hata oluşturur.
Parametreler
Cast bloğunun ilk pozisyonu ve dönmesi.
Cast blok şeklinin boyutu (studs) içinde. Maksimum boyut 512 studs.
Şekil castının yönü, şeklin max. mesafe kat edebileceğini temsil eden büyüklük ile. Maksimum mesafe 1024 studs'dır.
Dönüşler
Kod Örnekleri
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
Bu işlev bir BaseParts masasını bir CFrames masasına taşır, ohne necesarily firing the default property Changed events. This provides a very fast way to move large numbers of parts, as you don't have to pay the cost of separate property sets for each individual part.
Üçüncü argüman, hareket işlemini daha da optimize etmenizi sağlar.Varsayılan olarak, her bir parçanın <
kodhareketinizin bir engelleştirici olduğundan eminseniz bu işlevi sadece kullanmalısınız. CFrame özelliğini bir bileşenin ve kaynaklanmış modellerinin hızlı bir şekilde çoğu durumda yeterince hızlı olduğunu unutmayın.
Parametreler
Dönüşler
GetPartBoundsInBox
WorldRoot:GetPartBoundsInBox() bir kutunun içine bağlanan bir dizi parçayı döndürür bir kutunun içindeki hacim Datatype.CFrame ve boyutu 0> 0> Datatype.Vector30> kullanılar.
Vurgulandığı gibi, bu yerel sorgu yöntemi, parçaların kısıtlama kutularının gerçek kapasitesi değil, onların aktual kapasitesi olarak düşünür. Bu, özellikle silindirler, küreler, birleştiriler ve MeshParts gibi yer şekilleri olmayan
Bu yöntem, bir OverlapParams nesnemi kullanarak, bir içeriği veya bir dışeriği açıklamak için, bir içeriği veya bir dışeriği kullanmak için, ortak sayısının maksimumu için, kullanılacak parç
Parametreler
Sorgulanacak verilen kutu sesinin merkezindeki yer.
Sorgulanacak verilen kutu boyutu.
Yerel sorgu parametrelerinin yeniden kullanılabilir kısımlarını içerir.
Dönüşler
Spatial sorguyu eşlemeye uygun bir BaseParts matrisi.
GetPartBoundsInRadius
WorldRoot:GetPartBoundsInRadius() bir küme parçalarının bağlayıcı kutuları kürelerinin hacini açıklayan merkezi ( Vector3 ) ve çevre (number) ile aştığını gösterir.
Vurgulandığı gibi, bu yerel sorgu yöntemi, parçaların kısıtlama kutularının gerçek kapasitesi değil, onların aktual kapasitesi olarak düşünür. Bu, özellikle silindirler, küreler, birleştiriler ve MeshParts gibi yer şekilleri olmayan
Bu yöntem, bir OverlapParams nesnemi kullanarak, bir içeriği veya bir dışeriği açıklamak için, bir içeriği veya bir dışeriği kullanmak için, ortak sayısının maksimumu için, kullanılacak parç
Parametreler
Sorulacak verilen küre volümünün merkezindeki yer.
Sorulacak verilen küre hacmi çevresi.
Yerel sorgu parametrelerinin yeniden kullanılabilir kısımlarını içerir.
Dönüşler
Spatial sorguyu eşlemeye uygun bir BaseParts matrisi.
GetPartsInPart
WorldRoot:GetPartsInPart() bir dizi parçayı döndürür ki işgal alanı belirli bir parçayla paylaşılmıştır (buradaki parçalar WorldRoot ile aynı olmalıdır). Bu yöntem BasePart:GetTouchingParts() yerine kullanılabilir ve genellikle daha iyi bir seçim
Not edildiği gibi, bu yerel sorgu kontrol et, verilen parçanın kullanılan alanının aynen içinde bulunduğunu dikkate alır. Örneğin, bir küve/boşluk parçasının gerçekten bir parçaya çakışmadığını gösteren b
Bu yöntem, bir OverlapParams nesnemi kullanarak, bir içeriği veya bir dışeriği açıklamak için, bir içeriği veya bir dışeriği kullanmak için, ortak sayısının maksimumu için, kullanılacak parç
Parametreler
Volümü diğer parçalarla karşılaştırılmak üzere olacak olan parçadır.
Yerel sorgu parametrelerinin yeniden kullanılabilir kısımlarını içerir.
Dönüşler
Spatial sorguyu eşlemeye uygun bir BaseParts matrisi.
IKMoveTo
Bu işlev, ters kinematikler aracılığıyla belirli parçayı belirli yere hareket ettirir, onu orada tutmak için, herhangi bir bağlantıyı, constraints veya çarpışma eşyasının katılımını garanti etmek için şu anda sadece Studio'da mevcut değild
Sertlığı çevir bir sayıdır, 0 ile 1 arasında bir sayıdır, bu birimizin parçanın konumunu hedef CFrame'in rotasyon bölümüne nasıl saldıracağını gösteren bir sayıdır. Rotateiftliği çevir bir sayıdır, 0 ile 1 arasında bir sayıdır, bu birimiz
Örneğin:
- Eğer çevirme gücünün ve sıkılığın eşit olduğu 1'e eşit ise, parça onun üzerindeki fiziksel kısıtlama olarak herhangi bir şey olmadan hareket edilir.
- Eğer kırma direği ve dönme direği eşit ise, parça hedef CFrame'e doğru hareket etmeye çalışır, ancak fiziksel sınırlar nedeniyle yoldan çıkarılabilir.
- Eğer kırılma ve dönme güçlüğü eşitse, hedef CFrame'i görmezden gelir ve fiziksel kısıtlamalar hedefin yerindeki konum için çözülür.
Parametreler
Hareket ettirilen parça.
Belirli parçanın hareket edilmesi için bir yer.
Parçanın pozisyonunu hedefin CFrame bölümüne nasıl agresif olarak eşleştireceğini belirtir bir sayı.
Parçanın rotasyonunu hedefin dönme kısmına ne kadar agresif olarak eşleştireceğini belirtir bir sayı CFrame .
Fiziksel çözünürlük tarafından etkilenmesi gereken nesneleri belirtmenizi sağlar.
Dönüşler
Raycast
Bir yay kullanarak bir noktayı kullanarak bir noktayı kullanarak bir noktayı kullanarak bir noktayı kullanarak bir noktayı kullanarak bir noktayı kullanarak
Not that the length (magnitude) of the directional vector is important, as objects/terrain further away than its length will not be tested. If you're using a CFrame to help create the ray components, consider using CFrame.LookVector as the directional vector and multiply it by the desired length as shown in the example below. The maximum length of the directional vector is 15
Bu yöntem kullanmaz bir Ray nesneyi kullanmaz, ancak onun kaynağı ve yön bileşenleri Ray.Origin ve 2> Datatype.Ray.Direction2> ile ödünç alınabilir.
Parametreler
Işının kökeni.
Işının yönlendirme vektörü. Bu uzunluğun boyutu, parçalar/terrain uzunluğundan daha uzak olduğu için test edilmeyecektir.
Raycast işleminde hit uygunluk belirtmek için kullanılan bir nesne. Eğer sağlanmazsa, varsayılan değerler tüm parçaların göz önünde bulunduğu yer ve Terrain suyu görmezden gelir.
Dönüşler
Bir raycast işleminin sonuçlarını veya nil veya BasePart hücrelerine vurulan hücreleri içerir.
Kod Örnekleri
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
Parametreler
Dönüşler
Spherecast
Belirli bir yöne küresel bir şekil oluşturur ve ilk çarpışmayı bir BasePart veya bir Terrain hücresiyle ilk çarpışmayı geri verir. Bu, bir çarpışma bulmak için bir lineer ray kullanır, ancak bir 3D şekli kullanır.
Class.WorldRoot:GetPartsInPart() , şeklin şekillenmesini önce tespit etmez.
Bir çarpışma tespit edildiğinde, bir RaycastResult döndürülür ve çarpışma bilgisi içerir. Distance özelliği, şeklin bir çarpışma için katlanması gereken mesafeyi temsil eder ve Position özelliğ
Bu yöntem, yanlış menzil veya yön girişleri için hata oluşturur.
Parametreler
Yuvarlak şekillendirme çubuğunun başlangıç pozisyonu.
Cast küresel şeklinin çevre şemasıdır. Maksimum çevre şeması 256 studs'dır.
Şekil castının yönü, şeklin max. mesafe kat edebileceğini temsil eden büyüklük ile. Maksimum mesafe 1024 studs'dır.
Dönüşler
Kod Örnekleri
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
Dünyadaki parçalar için simülasyonu ilerletirken belirli bir zamana ve
Parametreler
Simüle edilecek süre. Bu argüman olumlu bir sayı olmalıdır. Daha büyük değerler bu işlevin çalışma zamanını artırır.
Simüle edilecek parçaların zorunlu dizi. Bu set, BasePart tipinde olan instansları içermelidir; diğer türler görmezden gelir.
Dönüşler
Kod Örnekleri
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)