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, 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: Model
  • Eklenti Güvenliği
    Paralel oku

    Etkisizleş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ı.

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

    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.

  • Çoğaltılmamış
    Paralel oku

    Bir Model ın pivot'unun nerede bulunduğunu belirler. Bu, bir Class.Model ın pivot'unun bir seti olmadığını gösterir.

Şuradan alınan Özellikler: PVInstance

Yöntemler

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

    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.

  • MoveTo(position : Vector3):void

    Class.Model.PrimaryPart|PrimaryPartı verilen pozisyona hareket ettirir. Bir ilk parça belirtilmediyse, modelin kök parçası kullanılır.

  • RemovePersistentPlayer(playerInstance : Player):void

    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.

  • ScaleTo(newScaleFactor : number):void

    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.

  • TranslateBy(delta : Vector3):void

    Ş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

Şuradan alınan Yöntemler: PVInstance

Ö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

partList: Instances

Listedeki parçaların listede olup olmadığını görmek için bir liste checkleri.

overlapIgnored: number

Parçalar dokunulduğu düşünülmeden önce parçaların çakışma eşik değerleri.

Varsayılan değer: 0.000199999995

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

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 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

cframe: CFrame

Cast bloğunun ilk pozisyonu ve dönmesi.

size: Vector3

Cast blok şeklinin boyutu (studs) içinde. Maksimum boyut 512 studs.

direction: Vector3

Ş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.

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

Dönüşler

Şekillendirme işleminin sonucunu veya nil içermez, eğer uygun olmayan BasePart veya Terrain hücreleri vurulursa.

Kod Örnekleri

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

void

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

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

Dönüşler

void

GetPartBoundsInBox

Instances
Paralel yaz

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

cframe: CFrame

Sorgulanacak verilen kutu sesinin merkezindeki yer.

size: Vector3

Sorgulanacak verilen kutu boyutu.

overlapParams: OverlapParams

Yerel sorgu parametrelerinin 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

Spatial sorguyu eşlemeye uygun bir BaseParts matrisi.

GetPartBoundsInRadius

Instances
Paralel yaz

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

position: Vector3

Sorulacak verilen küre volümünün merkezindeki yer.

radius: number

Sorulacak verilen küre hacmi çevresi.

overlapParams: OverlapParams

Yerel sorgu parametrelerinin 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

Spatial sorguyu eşlemeye uygun bir BaseParts matrisi.

GetPartsInPart

Instances
Paralel yaz

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

part: BasePart

Volümü diğer parçalarla karşılaştırılmak üzere olacak olan parçadır.

overlapParams: OverlapParams

Yerel sorgu parametrelerinin 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

Spatial sorguyu eşlemeye uygun bir BaseParts matrisi.

IKMoveTo

void
Eklenti Güvenliği

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

part: BasePart

Hareket ettirilen parça.

target: CFrame

Belirli parçanın hareket edilmesi için bir yer.

translateStiffness: number

Parçanın pozisyonunu hedefin CFrame bölümüne nasıl agresif olarak eşleştireceğini belirtir bir sayı.

Varsayılan değer: 0.5
rotateStiffness: number

Parçanın rotasyonunu hedefin dönme kısmına ne kadar agresif olarak eşleştireceğini belirtir bir sayı CFrame .

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

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

Varsayılan değer: "OtherMechanismsAnchored"

Dönüşler

void
Paralel yaz

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

origin: Vector3

Işının kökeni.

direction: Vector3

Işının yönlendirme vektörü. Bu uzunluğun boyutu, parçalar/terrain uzunluğundan daha uzak olduğu için test edilmeyecektir.

raycastParams: RaycastParams

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.

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

Dönüşler

Bir raycast işleminin sonuçlarını veya nil veya BasePart hücrelerine vurulan hücreleri içerir.

Kod Örnekleri

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
direction: Vector3
Varsayılan değer: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Dönüşler

Spherecast

Paralel yaz

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

position: Vector3

Yuvarlak şekillendirme çubuğunun başlangıç pozisyonu.

radius: number

Cast küresel şeklinin çevre şemasıdır. Maksimum çevre şeması 256 studs'dır.

direction: Vector3

Ş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.

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

Dönüşler

Şekillendirme işleminin sonucunu veya nil içermez, eğer uygun olmayan BasePart veya Terrain hücreleri vurulursa.

Kod Örnekleri

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

void
Eklenti Güvenliği

Dünyadaki parçalar için simülasyonu ilerletirken belirli bir zamana ve

Parametreler

dt: number

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.

parts: Instances

Simüle edilecek parçaların zorunlu dizi. Bu set, BasePart tipinde olan instansları içermelidir; diğer türler görmezden gelir.

Varsayılan değer: "{}"

Dönüşler

void

Kod Örnekleri

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