WorldRoot

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz

Bu temel sınıf, Workspace ve WorldModel gibi 3B uzay sorgularını ve simülasyonlarını işlemek için tasarlanmış herhangi bir duruma bir API sağlar.

Özet

Özellikler

Şuradan alınan Özellikler: Model
  • Eklenti Güvenliği
    Paralel oku

    Aktif durum yayınıyla deneyimler için modeldeki ayrıntı seviyesini ayarlar.Sets the level of detail on the model for experiences with instance streaming enabled.

  • Instans yayını etkinleştirildiğinde model yayın davranışını Models kontrol eder.

  • Birincil parçası Model , veya nil eğer açıkça ayarla.

  • Çoğaltılmamış
    Betiklenemez
    Paralel oku

    Modelin etrafındaki pivot etrafında ölçeklendirilmesi için yalnızca editör tarafından kullanılan özellik. Bu özelliği ayarlamak, ölçeğin sanki Model/ScaleTo çağrılmış gibi hareket edeceğini değiştirecektir.

  • Çoğaltılmamış
    Paralel oku

    Hangi noktada bir Model döndürme noktasının bulunduğunu belirler bulunmuyor ve bunun bir set Model.PrimaryPart içerdiği yer.

Şuradan alınan Özellikler: PVInstance

Yöntemler

Şuradan alınan Yöntemler: Model
  • AddPersistentPlayer(playerInstance : Player):()

    Bu modeli belirtilen oyuncu için kalıcı olarak ayarlar.Model.ModelStreamingMode davranışın ek sonucu olarak değiştirilmesi için değiştirilmesi gereken davranış PersistentPerPlayer olarak ayarlanmalıdır.

  • Bir Model'in tüm parçalarını içeren bir hacmin açıklamasını döndürür.

  • 'nin tümünü içeren en küçük sınırlayıcı kutunun boyutunu döndürür, eğer ayarlanırsa ile uyumlu olur.

  • Bu model nesnesi için kalıcı olan tüm Player nesnelerini döndürür.Davranış, bu yöntemin bir Script veya bir LocalScript 'dan çağrılıp çağrılmadığına bağlı olarak değişir.

  • Yeni oluşturulan modeller için varsayılan 1'e döner ve Model/ScaleTo aracılığıyla ölçeklendirildiğinde değişecektir.

  • MoveTo(position : Vector3):()

    PrimaryPart ı verilen pozisyona taşır. Birincil bir parça belirtilmediyse, modelin kök parçası kullanılacaktır.

  • RemovePersistentPlayer(playerInstance : Player):()

    Bu modeli belirtilen oyuncu için artık kalıcı olmayan yapar.Model.ModelStreamingMode davranışın kaldırılmasının sonucunda değiştirilmesi için değiştirilmesi gereken davranış için KalıcıOyuncu olarak ayarlanmalıdır.

  • ScaleTo(newScaleFactor : number):()

    Modelin ölçek faktörünü ayarlar, böylece tüm alt örneklerin boyutlandırma ve konumunu ayarlar ve ölçek faktörü 1 olduğunda ilk boyutları ve konumları ile ilgili bu ölçek faktörüne sahip olurlar.

  • TranslateBy(delta : Vector3):()

    Verilen Model ofsetiyle bir Vector3 değiştirir, modelin yönünü koruyarak.Yeni pozisyonda zaten başka bir BasePart veya Terrain varsa, Model o nesneyi üzerine geçecektir.

Şuradan alınan Yöntemler: PVInstance

Özellikler

Yöntemler

ArePartsTouchingOthers

ArePartsTouchingOthers en az bir tanesi diğer parçalara dokunuyorsa en az bir tanesi geri döner true if at least one of the given BasePart are touching any other parts.Mesafe eşiğinin içinde bulunan iki parça "dokunma" olarak kabul edilir, overlapIgnored .

Eğer herhangi bir parça verilmezse, false döndürülür.

Parametreler

partList: Instances

Listedeki parçaların listede olmayan herhangi bir parçaya dokunup dokunmadığını kontrol eden bir parça listesi.

Varsayılan değer: ""
overlapIgnored: number

Parçalar dokunuyor olarak kabul edilmeden önce göz ardı edilen parça örtüşme eşiği.

Varsayılan değer: 0.000199999995

Dönüşler

Doğru eğer ve sadece eğer herhangi biri içinde herhangi bir parçaya dokunuyorsa (parçaList'te olmayan parçalar). Yanlış eğer hiçbir parça geçmiyorsa.

Kod Örnekleri

The code block below demonstrates how to use WorldRoot:ArePartsTouchingOthers() to check if parts in a list are touching any parts in the workspace not in the list.

First the script creates two square parts that overlap 1 stud, Part1 and Part2. Then, it prints the value returned by ArePartsTouchingOthers() when Part1 is passed in partList at three different overlap values: 0, 0.999, and 1. The first two times ArePartsTouchingOthers() is called return false because the overlap values are less than the distance that Part1 and Part2 overlap. The third call returns true because the overlap value is equal to the distance that the parts overlap.

Checking for Touching Parts

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

Paralel yaz

Bir bloğun belirli bir yönde şeklini yansıtır ve bir BasePart veya Terrain hücre ile ilk çarpışmayı döndürür.Bu, bir çarpışma bulmak için bir yönde lineer bir ışını yansıtma şekline benzer, ancak bir ışın yerine 3B bir şekil kullanır.

Farklı olarak , bu yöntem ilk başta şekli kesiştiren 'yi tespit etmez.

Bir vuruş tespit edilirse, vuruş bilgilerini içeren bir RaycastResult döndürülür.The Distance özelliği, şeklinin bir vuruş bulmak için seyahat etmesi gereken mesafeyi temsil eder ve The Position özelliği, vuruşa neden olan kesişme noktasını temsil eder.

Bu yöntem geçersiz CFrame , boyut veya yön girişleri aktarılırsa bir hata atar.

Parametreler

cframe: CFrame

Dökme blok şeklinin başlangıç konumu ve dönüşü.

Varsayılan değer: ""
size: Vector3

Atış bloğu şeklinin mil boyutu. Maksimum boyut 512 mil.

Varsayılan değer: ""
direction: Vector3

Şekil kastının yönü, şeklin seyahat edebileceği maksimum mesafeyi temsil eden büyüklükle. Maksimum mesafe 1024 damga.

Varsayılan değer: ""
Varsayılan değer: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Shapecast işleminin sonucunu veya nil eğer uygun bir BasePart veya Terrain hücreye vurulmadıysa sonucunu içerir.

Kod Örnekleri

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

()

Bu işlev, varsayılan özellik BaseParts olaylarını ateşlemek zorunda kalmadan bir tabloyu CFrames bir tabloya taşır Changed.Bu, büyük sayıda parça hareket ettirmenin çok hızlı bir yolunu sağlar, çünkü her bir parça için ayrı mülkiyet setlerinin maliyetini ödemek zorunda değilsiniz.

Üçüncü argüman, hareket operasyonunu daha da optimize etmenize izin verir.Varsayılan olarak, her parçanın Changed etkinliği Position, Orientation ve CFrame için ateş eder.Ancak, üçüncü argüman olarak FireCFrameChanged belirtirseniz, sadece Changed özellik için CFrame etkinlik ateşlenecektir.

Not bu işlevi yalnızca kısım hareketinin kodunuzdaki bir sınır olduğundan emin olduğunuzda kullanmanız gerektiğini unutmayın.Basitçe, bireysel parçaların ve kaynaklanmış modellerin CFrame özelliklerini ayarlamak çoğu durumda yeterince hızlıdır.

Parametreler

partList: Instances
Varsayılan değer: ""
cframeList: Array
Varsayılan değer: ""
Varsayılan değer: "FireAllEvents"

Dönüşler

()

GetPartBoundsInBox

Instances
Paralel yaz

WorldRoot:GetPartBoundsInBox() bir dizi parça döndürür, sınır kutuları bir kutunun hacmini tanımlayan verilen merkez ( CFrame ) ve boyut ( Vector3 ) ile örtüşür.

Vurgulandığı gibi, bu uzay sorgu yöntemi, gerçek olarak işgal edilen hacmin yerine parçaların sınır kutularının hacmini verimli bir şekilde dikkate alır.Silindirler, küreler, birlikler ve blok olmayan MeshParts şekillere sahip olmaları göz önünde bulundurulduğunda önemli olabilir.Özellikle doğruluk önemli durumlarda, WorldRoot:GetPartsInPart() yerine kullanın veya bu yöntemin sonuçlarını kendiniz daha da filtreleyin.

Bu yöntem, bir dahil veya dışlama listesi, maksimum parça sayısı, sorguyu kullanmak için kullanılacak çarpışma grubu ve sorgunun kesişen bir parçanın BasePart.CanCollide üzerinde tercih edip etmediğini tanımlamak için bir BasePart.CanQuery değeri kullanarak uzay sorgusunun yeniden kullanılabilir kısımlarını tanımlamak için bir OverlapParams kullanır.

Parametreler

cframe: CFrame

Sorgulanacak verilen kutu hacminin merkezinin konumu.

Varsayılan değer: ""
size: Vector3

Sorgulanacak verilen kutu hacminin boyutu.

Varsayılan değer: ""
overlapParams: OverlapParams

Uzay sorgu parametlerinin yeniden kullanılabilir kısımlarını içerir.

Varsayılan değer: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Instances

Uzay sorgusuna eşleşen bir BaseParts dizi, ki bu da uzay sorgusunu eşleştirdi.

GetPartBoundsInRadius

Instances
Paralel yaz

WorldRoot:GetPartBoundsInRadius() bir dizi parça döndürür, sınır kutuları bir kübenin hacmini tanımlayan bir küre ve yarıçapı ( Vector3 ) kullanarak yer kaplar ve yarıçap (number).

Vurgulandığı gibi, bu uzay sorgu yöntemi, gerçek olarak işgal edilen hacmin yerine parçaların sınır kutularının hacmini verimli bir şekilde dikkate alır.Silindirler, küreler, birlikler ve blok olmayan MeshParts şekillere sahip olmaları göz önünde bulundurulduğunda önemli olabilir.Özellikle doğruluk önemli durumlarda, WorldRoot:GetPartsInPart() yerine kullanın veya bu yöntemin sonuçlarını kendiniz daha da filtreleyin.

Bu yöntem, bir dahil veya dışlama listesi, maksimum parça sayısı, sorguyu kullanmak için kullanılacak çarpışma grubu ve sorgunun kesişen bir parçanın BasePart.CanCollide üzerinde tercih edip etmediğini tanımlamak için bir BasePart.CanQuery değeri kullanarak uzay sorgusunun yeniden kullanılabilir kısımlarını tanımlamak için bir OverlapParams kullanır.

Parametreler

position: Vector3

Sorgulanacak verilen küre hacminin merkezinin konumu.

Varsayılan değer: ""
radius: number

Sorgulanacak verilen küre hacminin yarıçapı.

Varsayılan değer: ""
overlapParams: OverlapParams

Uzay sorgu parametlerinin yeniden kullanılabilir kısımlarını içerir.

Varsayılan değer: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Instances

Uzay sorgusuna eşleşen bir BaseParts dizi, ki bu da uzay sorgusunu eşleştirdi.

GetPartsInPart

Instances
Paralel yaz

WorldRoot:GetPartsInPart() bir dizi parçanın boş alanı verilen parçayla paylaşılan bir dizi döndürür (sorulan parçaların aynı WorldRoot olduğu gibi olması gerekir).Bu yöntem BasePart:GetTouchingParts() yerine kullanılabilir ve genellikle daha iyi bir seçimdir.

Not edildiği gibi, bu uzay sorgu yöntemi, verilen parça tarafından işgal edilen aynen hacim bir tüm geometrik çarpışma kontrol etkullanarak düşünür.Örnek olarak, içinde küçük/boş bir parça, aslında böyle bir parçayla örtüşmediği sürece sorgulanan parçalarla eşleşmeyecektir.Daha basit hacimler için, WorldRoot:GetPartBoundsInBox() veya WorldRoot:GetPartBoundsInRadius() kullanmayı düşünebilirsiniz, çünkü daha az doğru ancak daha verimli bir şekilde çalışırlar.

Bu yöntem, bir dahil veya dışlama listesi, maksimum parça sayısı, sorguyu kullanmak için kullanılacak çarpışma grubu ve sorgunun kesişen bir parçanın BasePart.CanCollide üzerinde tercih edip etmediğini tanımlamak için bir BasePart.CanQuery değeri kullanarak uzay sorgusunun yeniden kullanılabilir kısımlarını tanımlamak için bir OverlapParams kullanır.

Parametreler

part: BasePart

Sesinin diğer parçalarla karşılaştırılması gereken parça.

Varsayılan değer: ""
overlapParams: OverlapParams

Uzay sorgu parametlerinin yeniden kullanılabilir kısımlarını içerir.

Varsayılan değer: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Instances

Uzay sorgusuna eşleşen bir BaseParts dizi, ki bu da uzay sorgusunu eşleştirdi.

IKMoveTo

()
Eklenti Güvenliği

Bu işlev, belirtilen parçayı doğrudan oraya taşımak yerine, ters kinematik aracılığıyla belirtilen konuma taşır, böylece herhangi bir eklem, constraints veya parçanın katıldığı çarpışmalar fiziksel olarak memnun kalır.Şu anda bu işlev yalnızca çalışan bir oyunun fiziğiyle çakıştığı için sadece Studio'da mevcut: plugins .

Sertliği çevir 0 ile 1 arasında bir sayıdır ve parçanın konumunu hedef CFrame'in konumuna ne kadar agresif bir şekilde eşleştireceğini belirler. Sertliği döndür 0 ile 1 arasında bir sayıdır ve parçanın dönüşünü hedef CFrame'in dönüşüne ne kadar agresif eşleştireceğini belirler.

Örneğin:

  • Eğer tersine çevirme sertliği ve dönme sertliği her ikisi de 1'e eşitse, parça onun üzerinde hangi fiziksel kısıtlamalar olursa olsun hemen hedef CFrame'e taşınacaktır.
  • Eğer tersine çevirme sertliği ve dönme sertliği her ikisi de 0.5 ile eşitse, parça hedef CFrame'e doğru hareket etmeye çalışacak, ancak üzerindeki fiziksel kısıtlamalar tarafından yolundan çıkarılabilir.
  • Eğer tersine çevirme sertliği ve dönme sertliği her ikisi de 0'a eşitse, hedef CFrame göz ardı edilecek ve nesne konumunda bulunan fiziksel sınırlar çözülecektir.

Parametreler

part: BasePart

Hareket eden parça.

Varsayılan değer: ""
target: CFrame

Belirtilen parçayı hareket ettirecek konum.

Varsayılan değer: ""
translateStiffness: number

Partin konumunu hedefin konumuna ne kadar agresif eşleştireceğini belirten 0 ile 1 arasında bir sayı CFrame .

Varsayılan değer: 0.5
rotateStiffness: number

Parçanın dönüşünü hedefin dönüşüne ne kadar agresif eşleştireceğini belirten 0 ile 1 arasında bir sayı CFrame .

Varsayılan değer: 0.5
collisionsMode: Enum.IKCollisionsMode

Fiziksel çözünürlük tarafından etkilenecek nesneleri belirtmenizi sağlar.

Varsayılan değer: "OtherMechanismsAnchored"

Dönüşler

()
Paralel yaz

Bir kaynağı, yönü ve seçici RaycastParams kullanarak bir ışın atar.Uygun bir BasePart veya Terrain hücre bulursa, bir RaycastResult işlemin sonuçlarını içeren bir döndürülür.Eğer hiçbir RaycastParams nesne sağlanmazsa, varsayımlar kullanılır (tüm parçalar dikkate alınır ve Terrain su göz ardı edilmez).

Yönlü vektörün uzunluğunun (büyüklüğünün) önemli olduğunu unutmayın, çünkü uzunluğundan daha uzak nesneler/araziler test edilmeyecektir.Işın bileşenlerini oluşturmaya yardımcı olmak için bir CFrame kullanıyorsanız, yönlü vektör olarak CFrame.LookVector kullanmayı ve aşağıdaki örnekte gösterildiği gibi istenen uzunlukla çarptmayı düşünün.Yön vektörünün maksimum uzunluğu 15,000 stud'dur.

Bu yöntem kullanmıyor bir Ray nesne, ancak kökeni ve yön bileşenleri Ray.Origin ve Ray.Direction 'dan ödünç alınabilir.

Parametreler

origin: Vector3

Işığın kaynağı noktası.

Varsayılan değer: ""
direction: Vector3

Işının yönlü vektörü. Bu vektörün uzunluğunun önemli olduğunu unutmayın, çünkü uzunluğundan daha uzak parçalar/arazi test edilmeyecektir.

Varsayılan değer: ""
raycastParams: RaycastParams

Vuruş uygunluk özelliklerini belirtmek için kullanılan bir nesne. Raycast operasyonunda.Verilmezse, tüm parçalar dikkate alındığında ve Terrain su göz ardı edilmediğinde varsayılan değerler kullanılır.

Varsayılan değer: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Bir ışın atma işleminin sonuçlarını veya nil eğer uygun bir BasePart veya Terrain hücreye vurulmadıysa sonuçlarını içerir.

Kod Örnekleri

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

Parametreler

part: BasePart
Varsayılan değer: ""
direction: Vector3
Varsayılan değer: ""
Varsayılan değer: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Spherecast

Paralel yaz

Belirli bir yönde küre şekli atar ve BasePart veya Terrain hücre ile ilk çarpışmayı döndürür.Bu, bir çarpışma bulmak için bir yönde lineer bir ışını yansıtma şekline benzer, ancak bir ışın yerine 3B bir şekil kullanır.

Farklı olarak , bu yöntem ilk başta şekli kesiştiren 'yi tespit etmez.

Bir vuruş tespit edilirse, vuruş bilgilerini içeren bir RaycastResult döndürülür.The Distance özelliği, şeklinin bir vuruş bulmak için seyahat etmesi gereken mesafeyi temsil eder ve The Position özelliği, vuruşa neden olan kesişme noktasını temsil eder.

Bu yöntem, geçersiz yarıçap veya yön girişleri verilirse bir hata atar.

Parametreler

position: Vector3

Döküm küre şeklinin başlangıç konumu.

Varsayılan değer: ""
radius: number

Metrelerde yayın küre şeklinin yarıçapı. Maksimum yarıçap 256 metre.

Varsayılan değer: ""
direction: Vector3

Şekil kastının yönü, şeklin seyahat edebileceği maksimum mesafeyi temsil eden büyüklükle. Maksimum mesafe 1024 damga.

Varsayılan değer: ""
Varsayılan değer: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Shapecast işleminin sonucunu veya nil eğer uygun bir BasePart veya Terrain hücreye vurulmadıysa sonucunu içerir.

Kod Örnekleri

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

()
Eklenti Güvenliği

Dünyadaki parçalar için simülasyonu belirtilen bir süre artışı ve seçilen bir BasePart dizi üzerine ilerletir.Bir dizi parça belirtilirse, sadece bu parçalar simüle edilir ve dünyadaki diğer tüm parçalar sabitlenmiş olarak ele alınır.Bu argüman bırakıldığında, dünyadaki tüm parçalar simülasyona dahil edilecektir.Belirtilen süre artışı herhangi bir pozitif sayı olabilir ve daha büyük değerler işlevin çalışma süresini artırır.Zaman artışının değerine bağlı olarak, fizik sistemi simülasyonun doğruluğunu ve stabilitesini korumak için birden fazla bireysel adıma ayırabilir.Fonksiyon birden fazla adım gerçekleştirse bile, simülasyonun sonuçları yalnızca fonksiyon tamamlandıktan sonra görülecektir.Bir simülasyonun bireysel adımlarını görselleştirmek için, işlev RenderStep aracılığıyla RunService.RenderStepped etkinliği üzerinden bir kez çağrılabilir.

Parametreler

dt: number

Simüle edilecek süre miktarı. Bu argüman pozitif bir sayı olmalıdır. Daha büyük değerler bu işlevin çalışma süresini artıracaktır.

Varsayılan değer: ""
parts: Instances

Simüle edilecek parça sayısının isteğe bağlı bir dizi olması gerekir. Bu set BasePart parçalar içermelidir; diğer türler göz ardı edilir.

Varsayılan değer: "{}"

Dönüşler

()

Kod Örnekleri

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)

Etkinlikler