BasePart
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
BasePart , dünyadaki nesneleri görselleştiren ve Workspace sırasında fiziksel olarak simüle edilen soyut bir temel sınıftır.Birkaç uygulama var BasePart , en yaygın olanı Part ve MeshPart .Diğerleri WedgePart , SpawnLocation ve tek oyuncu Terrain nesnesini içerir.Genel olarak, belgeler bir "parçaya" işaret ettiğinde, çoğu BasePart uygulama çalışacak ve sadece Part değil.
Simüle edilmiş sert vücutlara nasıl BaseParts gruplandırıldıklarına ilişkin bilgi için, bakın Birleşimler.
Etkileşime giren birçok farklı nesne var BasePart (Terrain dışında), şunlar da dahil:
- Birkaç BaseParts bir Model içinde gruplandırılabilir ve aynı anda PVInstance:PivotTo() kullanarak taşınabilir. Modeller görün.
- A bir 'in yüzlerine geniş bir görüntü dokusu uygularken, A bir 'in yüzlerine kareli bir görüntü dokusu uygular.Doku ve Desenleri görün.
- Attachments bir parçaya ilişkin olarak belirtmek için bir BasePart e eklenebilir CFrames.Bunlar genellikle fiziksel Constraint nesneler tarafından kullanılır ve Mekanik Sınırlar ve Taşıyıcı Sınırları belirtilen şekilde.
- ParticleEmitter nesneler, ebeveyn oldukları BasePart hacminde eşit olarak parçacıklar yayarlar. Görüş Parçacık Yayıcıları .
- Işık nesneleri gibi PointLight ışığı merkezinden bir BasePart ışık yayar ve ışık kaynaklarında gösterildiği gibi Işık kaynakları .
- Ebeveynliği bir Tool ve adı Tutuş verildiğinde, bir BasePart karakterler tarafından tutulabilir. Deneyimsel Araçlar göz atın.
Özet
Özellikler
Bir parçanın fiziğe göre hareketsiz olup olmadığını belirler.
Parçanın montajındaki açısal hız.
Dünya uzayındaki parçanın montajının kütle merkezi.
Parçanın montajının lineer hızı.
Parçanın montajının toplam masesi.
Montajın kök kısmına bir referans.
Parçanın fiziksel olarak ses simülasyonuyla etkileşime gireceğini belirler, ışık için CastShadow gibi.
Bir parçanın arka yüzü için yüzey türünü belirler.
Bir parçanın alt yüzü için yüzey türünü belirler.
Bir parçanın rengini belirler.
Dünyadaki BasePart konumunu ve yönünü belirler.
Bir parçanın diğer parçalarla çarpışıp çarpışmayacağını belirler.
Parçanın uzay sorgu operasyonları sırasında dikkate alınıp alınmadığını belirler.
Touched ve TouchEnded olaylarının parçada ateşlenip ateşlenmediğini belirler.
Bir parçanın gölge attığını veya atmadığını belirler.
Bir parçanın kütle merkezinin bulunduğu dünya konumunu tanımlar.
Bir parçanın çarpışma grupadını tanımlar.
Bir parçanın rengini belirler.
Parçanın mevcut fiziksel özelliklerini gösterir.
Bir parçanın birkaç fiziksel özelliğini belirler.
Parçalar ve montajlar üzerinde hava dinamik güçlerini etkinleştirmek veya devre dışı bırakmak için kullanılır.
Fizik motoru tarafından ele alınan BasePart 'nin gerçek fiziksel boyutu.
Bir parçanın ön yüzü için yüzey türünü belirler.
Bir parçanın sol yüzü için yüzey türünü belirler.
Yerel müşteriye yalnızca görünen bir çarpanı BasePart.Transparency belirler, ki bu sadece yerel müşteridir.
Bir parçanın Studio'da seçilebilir olup olmadığını belirler.
Parçanın kütlesini, yoğunluğunun ve hacminin ürününü tanımlar.
Parçanın sert vücuttoplam kütlesine veya süspansiyonuna katkıda bulunup bulunmadığını belirler.
Bir parçanın dokusunu ve varsayılan fiziksel özelliklerini belirler.
MaterialVariant adı.
Dünyadaki parçanın dönüşünü tanımlar.
Parçanın merkezinin CFrame 'sinden ayrılma ofsetini belirtir.
Parçanın dünyadaki konumunu tanımlar.
Son kaydedilen fizik güncellemesinden beri geçen süre.
Bir parçanın gökyüzünü ne kadar yansıttığını belirler.
Resize() yöntemi tarafından izin verilen en küçük boyut değişikliğini tanımlar.
Bir parçanın yeniden boyutlandırılabileceği yüzleri tanımlar.
Bir parçanın sağ yüzünün türünü belirler.
Bir montajın kök parçasını belirlemenin ana kuralı.
Üç eksen için parçanın derecelerde dönmesi.
Bir parçanın boyutlarını belirler (uzunluk, genişlik, yükseklik).
Bir parçanın üst yüzünün yüzey türünü belirler.
Bir parçanın ne kadar görülebildiğini belirler (parça saydamlığının tersi).
Yöntemler
Montaja bir açısal hız uygulayın.
Montajın center of mass 'sinde montaja bir tepki uygulayın.
Belirtilen pozisyonda montaja bir tepki uygulayın.
Parçaların birbiriyle çarpıp çarpıp olmadığını döndürür.
Bir parçanın ağ sahipliğini ayarlayabileceğinizi kontrol eder.
Objeye herhangi bir sert bağlantı ile bağlı bir parça tablosu döndürür.
Bu Parçaya bağlı olan tüm Eklemleri veya Kısıtları geri döndür.
Mass özelliğinin değerini döndürür.
Bu parçanın ağ sahibi olan mevcut oyuncuyu veya nil sunucu durumunda döndürür.
Oyun motoru bu parça için ağ sahibini otomatik olarak karar verirse gerçek döndürür.
Bir parça grubunun temel parçasını döndürür.
Bu parçayla kesişen tüm BasePart.CanCollide gerçek parçaların bir tablosunu döndürür.
Bu parçanın montajının verilen konuma göre lineer hızını döndürür.
Nesne bir yerde tutacak bir parçaya bağlıysa gerçek döndürür (örneğin bir Anchored parçası), aksi takdirde yalan döndürür.
Bir nesnenin boyutunu, Studio yeniden boyutlandırma aracını kullanarak gibi değiştirir.
Verdiğiniz oyuncuyu bu ve tüm bağlı parçalar için ağ sahibi olarak ayarlar.
Oyun motorunun dinamik olarak kimin parçanın fiziğini ele alacağına karar vermesine izin verin (müşterilerden biri veya sunucu).
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Parçanın ve verilen dizedeki diğer parçaların örtüşen geometrisinden yeni bir IntersectOperation oluşturur.
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Parçadan yeni bir UnionOperation oluşturur, verilen matristeki parçaların geometrisinden eksilerek.
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Parçadan yeni bir UnionOperation ve verilen matristeki parçalar tarafından işgal edilen geometri oluşturur.
Bir PVInstance 'nin merkezini alır.
Dönüştürür PVInstance tüm altındaki PVInstances ile birlikte pivotun şimdi belirtilen CFrame 'de yer aldığını, böylece dönüşüm aşağıdaki gibi gerçekleşir:
Etkinlikler
Bir parça, fiziksel hareketin sonucu olarak başka bir parçaya dokunmayı bıraktığında ateş eder.
Bir parça fiziksel hareketin sonucu olarak başka bir parçaya dokunduğunda ateş eder.
Özellikler
Anchored
The Anchored özelliği, parçanın fiziğe sabit olup olmayacağını belirler.Aktifleştirildiğinde, bir parça asla yerçekimi, diğer parça çarpışmaları, diğer parçaların üzerine geçmesi veya başka fiziksel nedenlerden dolayı konumunu değiştirmeyecektir.Sonuç sonuç, iki sabitlenmiş parça asla birbirlerine Touched etkinliğini ateşlemeyecektir.
Kilitli bir parça, çekirdeğinin CFrame veya Position değiştirilmesiyle hala hareket edebilir ve hala sıfır olmayan bir AssemblyLinearVelocity ve AssemblyAngularVelocity olabilir.
Son olarak, sabitlenmemiş bir parça bir sabitlenmiş parça ile bir nesne gibi Weld aracılığıyla birleştirilirse, o da sabitlenecektir.Eğer böyle bir ortak kırılırsa, parça tekrar fiziğin etkisi altına girebilir.Daha fazla ayrıntı için Montajlar bakın.
Ağ sahipliği sabitlenmiş parçalara ayarlanamaz.Bir parçanın sunucuda sabitlenmiş durumu değişirse, bu parçanın ağ sahipliği etkilenecektir.
Kod Örnekleri
This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).
local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)
AssemblyAngularVelocity
Bu parçanın montajının açısal hız vektörü. Bu, saniye başına radyandaki yön değişim oranıdır.
Açısal hız, montajın her noktasında aynıdır.
Hızı doğrudan ayarlamak, gerçekçi olmayan harekete yol açabilir.Torque veya AngularVelocity kısıtlaması kullanılması tercih edilir veya hızlı bir değişiklik istiyorsanız ApplyAngularImpulse() kullanın.
Parça, sunucu tarafından sahipleniyorsa bu özellik bir sunucudan değiştirilmelidir (bir veya bir ile değil, set edilmiş ile ).Parça, otomatik mülkiyet aracılığıyla bir müşteri tarafından sahipleniyorsa, bu özellik bir müşteri kriptinden veya bir sunucu kriptinden değiştirilebilir; bir sunucu sahibi parçası için bir müşteri kriptinden değiştirmek hiçbir etkiye sahip olmayacaktır.
AssemblyCenterOfMass
Montajdaki tüm parçaların Mass ve Position aracılığıyla hesaplanan bir pozisyon.
Montajın sabit bir parçası varsa, bu parçanın kütle merkezi montajın kütle merkezi olacak ve montajın sınırsız kütlesi olacak.
Kütle merkezini bilmek, montajın stabilitesini korumaya yardımcı olabilir.Kütle merkezine uygulanan bir kuvvet sadece lineer olarak açısal hızlanmaya neden olmayacaktır.Düşük bir kütle merkezine sahip bir montaj, yerçekimi etkisi altında dik dururken daha iyi bir süre geçirecektir.
AssemblyLinearVelocity
Bu parçanın montajının lineer hız vektörü. Bu, saniye başına AssemblyCenterOfMass konum değişim oranıdır.
Montajın kütle merkezinden başka bir noktadaki hızı bilmek istiyorsanız, GetVelocityAtPosition() kullanın.
Hızı doğrudan ayarlamak, gerçekçi olmayan harekete yol açabilir.Bir VectorForce sınırı kullanmak tercih edilir veya anlık hız değişikliği istiyorsanız ApplyImpulse() kullanın.
Parça, sunucu tarafından sahipleniyorsa bu özellik bir sunucudan değiştirilmelidir (bir veya bir ile değil, set edilmiş ile ).Parça, otomatik mülkiyet aracılığıyla bir müşteri tarafından sahipleniyorsa, bu özellik bir müşteri kriptinden veya bir sunucu kriptinden değiştirilebilir; bir sunucu sahibi parçası için bir müşteri kriptinden değiştirmek hiçbir etkiye sahip olmayacaktır.
AssemblyMass
Bu bölümün montajındaki tüm BaseParts kütlesinin toplamı.Massless ve montajın kök parçası olmayan parçalar, AssemblyMass 'a katkıda bulunmayacaktır.
Montajın sabit bir parçası varsa, montajın kütlesi sınırsız olarak kabul edilir.Büyük bir masa farkıyla sabitlenmemiş montajlar arasındaki kısıtlamalar ve diğer fiziksel etkileşimler, istikrarsızlıklara neden olabilir.
AssemblyRootPart
Bu özellik, montajın kök kısmını temsil etmek için otomatik olarak seçilen BasePart özelliğini gösterir.Geliştiriciler GetRootPart()
Kök parça, montajdaki parçaların RootPriority kısmını değiştirerek değiştirilebilir.
Hepsi aynı AssemblyRootPart parçalarını paylaşan parçalar aynı montajda bulunur.
Kök parçalar hakkında daha fazla bilgi için, Birleşimler bakın.
AudioCanCollide
AudioCanCollide parçanın fiziksel olarak ses simülasyonuyla etkileşime gireceğini belirler, ışık için CastShadow benzer.
Devre dışı bırakıldığında, ses parçadan geçer; kapatılmaz veya yansıtılmaz.
BackSurface
The BackSurface özelliği, bir parçanın pozitif Z yönü için kullanılan yüzey türünü belirler.İki parçanın yüzleri birbirine yakın yerleştirildiğinde, aralarında bir ortak oluşturabilirler.
BottomSurface
The BottomSurface özelliği, bir parçanın negatif Y yönü için kullanılan yüzey türünü belirler.İki parçanın yüzleri birbirine yakın yerleştirildiğinde, aralarında bir ortak oluşturabilirler.
BrickColor
Bu özellik bir parçanın rengini belirler.Parçanın bir Material 'si varsa, malzeme dokusunu görselleştirirken kullanılan renk de belirlenir.Renk üzerinde daha fazla kontrol için, Color özelliği kullanılabilir ve bu özellik en yakın BrickColor kullanacaktır.
Bir parçanın diğer görsel özellikleri Transparency ve Reflectance tarafından belirlenir.
CFrame
The CFrame özelliği, dünyadaki BasePart konumunu ve yönünü her ikisi de belirler.Geometride rastgele bir referans konumu gibi davranır, ancak ExtentsCFrame fiziksel merkezinin gerçek CFrame 'ini temsil eder.
Bir parçaya CFrame ayarlandığında, diğer katılan parçalar da parçaya göre hareket eder, ancak bir oyuncunun karakterini taşımak için PVInstance:PivotTo() kullanmanız önerilir, örneğin bir oyuncunun karakterini taşırken.
BasePart.Position ayarından farklı olarak, CFrame ayarı daima parçayı doğru verilen CFrame ye taşır; başka bir deyişle: hiçbir örtüşme kontrolü yapılmaz ve fizik çözücü herhangi bir örtüşmeyi çözmeye çalışmayacaktır, eğer her iki parça da değilse Anchored .
Bir parçanın CFrame konumlarına ilişkin izlenmesi için, bir Attachment yararlı olabilir.
Kod Örnekleri
Bu kod örneği, bir parçanın CFrame'ini birçok farklı şekilde ayarlamayı gösterir.CFRame değerlerini nasıl oluşturup birleştireceğinizi gösterir.Nispeten konumlandırma göstermek için "DiğerParça" adlı kardeş bir parçayı referans eder.
local part = script.Parent:WaitForChild("Part")
local otherPart = script.Parent:WaitForChild("OtherPart")
-- Parçanın CFrame'ini hiçbir dönüşle (0, 0, 0) sıfırla.
-- Bazen "kimlik" CFrame olarak adlandırılır
part.CFrame = CFrame.new()
-- Belirli bir konuma ayarlan (X, Y, Z)
part.CFrame = CFrame.new(0, 25, 10)
-- Yukarıdakiyle aynı, ancak bunun yerine bir Vector3 kullanın
local point = Vector3.new(0, 25, 10)
part.CFrame = CFrame.new(point)
-- Parçanın CFrame'inin bir noktada olmasını ve diğerine bakmasını sağlayın
local lookAtPoint = Vector3.new(0, 20, 15)
part.CFrame = CFrame.lookAt(point, lookAtPoint)
-- Parçanın CFrame'ini yerel X ekseninde pi/2 radyandan döndür
part.CFrame = part.CFrame * CFrame.Angles(math.pi / 2, 0, 0)
-- Parçanın CFrame'ini yerel Y ekseninde 45 derece döndür
part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(45), 0)
-- Parçanın CFrame'ini küresel Z ekseninde 180 derece döndür (sırayı not edin!)
part.CFrame = CFrame.Angles(0, 0, math.pi) * part.CFrame -- Pi radyandır 180 derece eşittir
-- İki CFrame'i birleştirmek * (çarpan işleci) kullanılarak yapılır
part.CFrame = CFrame.new(2, 3, 4) * CFrame.new(4, 5, 6) --> CFrame.new(6, 8, 10) ile eşit
-- Algebrik çarpmadan farklı olarak, CFrame kompozisyonu iletişimsel değildir: a * b mutlaka b * a değildir!
-- Imagine* bir dizi eylem olarak düşünün. Örneğin, aşağıdaki satırlar farklı CFrames üretir:
-- 1) Parçanın 5 birimini X'e kaydır.
-- 2) Parçayı Y ekseninde 45 derece döndür.
part.CFrame = CFrame.new(5, 0, 0) * CFrame.Angles(0, math.rad(45), 0)
-- 1) Parçayı Y ekseninde 45 derece döndür.
-- 2) Parçanın 5 birimini X'e kaydır.
part.CFrame = CFrame.Angles(0, math.rad(45), 0) * CFrame.new(5, 0, 0)
-- Hiçbir "CFrame bölümü" yok, ancak bunun yerine basitçe "ters işlem yapmak".
part.CFrame = CFrame.new(4, 5, 6) * CFrame.new(4, 5, 6):Inverse() --> CFrame.new(0, 0, 0) ile eşit
part.CFrame = CFrame.Angles(0, 0, math.pi) * CFrame.Angles(0, 0, math.pi):Inverse() --> CFrame.Angles(0, 0, 0) ile eşit
-- Bir parçayı diğerine göre konumlandır (bu durumda, parçamızı diğer parçanın üzerine yerleştir)
part.CFrame = otherPart.CFrame * CFrame.new(0, part.Size.Y / 2 + otherPart.Size.Y / 2, 0)
CanCollide
CanCollide bir parçanın fiziksel olarak diğer parçalarla etkileşime gireceğini belirler.Devre dışı bırakıldığında, diğer parçalar kesintisiz olarak parçadan geçebilir.Dekorasyon için kullanılan parçalar genellikle fizik motoru tarafından dikkate alınması gerekmediği için CanCollide olur, çünkü fiziğin motoru tarafından dikkate alınması gerekmez.
Bir parça Anchored değilse ve CanCollide devre dışı bırakılmışsa, dünyadan düşüp sonunda Workspace.FallenPartsDestroyHeight tarafından yok edilebilir.
When CanCollide devre dışı bırakıldığında, parçalar hala Touched etkinliğini ateşleyebilir (ve diğer parçalar da onlara dokunur).Bunu CanTouch ile devre dışı bırakabilirsiniz.
Çarpışma hakkında daha fazla bilgi için, Çarpışma bakın.
Kod Örnekleri
This code sample shows how a part can fade away when touched by a Humanoid then reappear a moment after to create a passable door.
-- Paste into a Script inside a tall part
local part = script.Parent
local OPEN_TIME = 1
-- Can the door be opened at the moment?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("Black")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("Bright blue")
end
local function onTouch(otherPart)
-- If the door was already open, do nothing
if debounce then
print("D")
return
end
-- Check if touched by a Humanoid
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("not human")
return
end
-- Perform the door opening sequence
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()
CanQuery
Bu özellik, parçanın GetPartBoundsInBox veya Raycast gibi uzay sorgu operasyonları sırasında dikkate alınıp alınmadığını belirler.Not that etkili olması için devre dışı bırakılması gerektiğini ve uzay sorgu işlevlerinin asla ile çalışan parçaları içermeyeceğini unutmayın.
Bu özellikten öte, uzay sorgu işlevlerini çağırırken bir OverlapParams veya RaycastParams nesne kullanarak verilen bir listenin mirasçılarını dışlamak da mümkündür.
CanTouch
Bu özellik, Touched ve TouchEnded olaylarının parçada ateşlenip ateşlenmediğini belirler.Eğer , diğer dokunan parçalar da dokunma olaylarının ateşlenmesi için 'e ayarlanmalıdır, böylece dokunma olayları ateşlenir.Eğer false , parça için dokunma etkinlikleri ayarlanamaz ve bunu yapmaya çalışmak bir hata verecektir.Benzer şekilde, bir dokunma olayı bağlandıktan sonra özellik false olarak ayarlanırsa, olay kopartılacak ve TouchTransmitter kaldırılacaktır.
Bu çarpışma mantığının çarpışma gruplarına saygı göstermesi için Workspace.TouchesUseCollisionGroups üzerinden ayarlanabileceğini unutmayın.Eğer true , çakışmayan gruplardaki parçalar hem çarpışma ve dokunma etkinliklerini görmezden gelecek, böylece bu özellik geçersiz hale gelecek.
Performance İçindekiler Performance Performans
Her iki ve set edilmiş parçaya sahip parçalarda küçük bir performans kazancı vardır, çünkü bu parçalar asla bir parça ile parça çarpışması hesaplamasına ihtiyaç duymaz.Ancak, hala Raycasts ve OverlapParams sorguları tarafından vurulabilirler.
CastShadow
Bir parçanın gölge attığını veya atmadığını belirler.Bu özelliği belirli bir parça için devre dışı bırakmak, bu parçaya atılan gölgeler üzerinde görsel eserlere neden olabilir.
Bu özellik performans geliştirmesi için tasarlanmadı, ancak karmaşık sahnelerde, belirli parçalarda stratejik olarak devre dışı bırakmak sözleşme imzalamaartırabilir.Görsel eserlerin olasılığı nedeniyle, çoğu durumda tüm parçalarda etkin bırakılmasını öneririz.
CenterOfMass
The CenterOfMass özelliği, bir parçanın kütle merkezinin yerel pozisyonunu tanımlar.Bu tek bir parça montajıysa, bu dünya uzayından yerel olarak dönüştürülen AssemblyCenterOfMass dır.Basit Parts üzerinde, kütle merkezi daima (0, 0, 0) , ancak değişebilir WedgePart veya MeshPart .
CollisionGroup
The CollisionGroup özelliği, parçanın çarpışma grubunun adını tanımlar (maksimum 100 karakter).Parçalar, adı "Default" olan varsayılan grubun içinde başlar.Bu değer boş olamaz.
Bu özellik kendisi yeniden yazılmaz olsa da, motor geriye dönük uyumluluk sorunlarını çözmek için başka bir özel mülk aracılığıyla değeri içsel olarak yeniden yazdırır.
Kod Örnekleri
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
Color
The Color özelliği bir parçanın rengini belirler.Parçanın bir Material 'si varsa, malzeme dokusunu görselleştirirken kullanılan renk de belirlenir.
Bu özellik ayarlanırsa, BrickColor bu Color değerine en yakın eşleşmeyi kullanacaktır.
Bir parçanın diğer görsel özellikleri Transparency ve Reflectance tarafından belirlenir.
Kod Örnekleri
This code sample colors a player's entire character based on how much health they have. It generates a color based on their max health, then sets the color properties of objects within their character, removing any extra objects.
-- Paste into a Script within StarterCharacterScripts
-- Then play the game, and fiddle with your character's health
local char = script.Parent
local human = char.Humanoid
local colorHealthy = Color3.new(0.4, 1, 0.2)
local colorUnhealthy = Color3.new(1, 0.4, 0.2)
local function setColor(color)
for _, child in pairs(char:GetChildren()) do
if child:IsA("BasePart") then
child.Color = color
while child:FindFirstChildOfClass("Decal") do
child:FindFirstChildOfClass("Decal"):Destroy()
end
elseif child:IsA("Accessory") then
child.Handle.Color = color
local mesh = child.Handle:FindFirstChildOfClass("SpecialMesh")
if mesh then
mesh.TextureId = ""
end
elseif child:IsA("Shirt") or child:IsA("Pants") then
child:Destroy()
end
end
end
local function update()
local percentage = human.Health / human.MaxHealth
-- Create a color by tweening based on the percentage of your health
-- The color goes from colorHealthy (100%) ----- > colorUnhealthy (0%)
local color = Color3.new(
colorHealthy.R * percentage + colorUnhealthy.r * (1 - percentage),
colorHealthy.G * percentage + colorUnhealthy.g * (1 - percentage),
colorHealthy.B * percentage + colorUnhealthy.b * (1 - percentage)
)
setColor(color)
end
update()
human.HealthChanged:Connect(update)
CurrentPhysicalProperties
CurrentPhysicalProperties parçanın mevcut fiziksel özelliklerini gösterir.Her parça için fiziksel özellikler için özel değerler ayarlayabilirsiniz, özel malzeme ve malzeme geçersizleştirme.Roblox motoru, bir parçanın etkili fiziksel özelliklerini belirlerken daha granüler tanımları önceler.Aşağıdaki listedeki değerler en yüksek önceliğinden en düşük önceliğe doğru sıralanmıştır:
- Parçanın özel fiziksel özellikleri
- Parçanın özel materyalinin özel fiziksel özellikleri
- Parçanın malzemesinin geçersizleştirilmesinin özel fiziksel özellikleri malzemesinin geçersizleştirilmesi
- Parçanın malzemesinin varsayılan fiziksel özellikleri
CustomPhysicalProperties
CustomPhysicalProperties bir parçanın çeşitli fiziksel özelliklerini özelleştirmenizi sağlar, örneğin yoğunluğu, sürtünme ve elastikiyet.
Etkinleştirildiğinde, bu özellik bu fiziksel özellikleri yapılandırmanıza izin verir.Devre dışı bırakıldığında, bu fiziksel özellikler parçanın Material 'sı tarafından belirlenir.
Kod Örnekleri
This code sample demonstrates how to set the CustomPhysicalProperties property of a part.
local part = script.Parent
-- This will make the part light and bouncy!
local DENSITY = 0.3
local FRICTION = 0.1
local ELASTICITY = 1
local FRICTION_WEIGHT = 1
local ELASTICITY_WEIGHT = 1
local physProperties = PhysicalProperties.new(DENSITY, FRICTION, ELASTICITY, FRICTION_WEIGHT, ELASTICITY_WEIGHT)
part.CustomPhysicalProperties = physProperties
EnableFluidForces
When true , ve When Workspace.FluidForces etkinleştirildiğinde, fizik motorunun bu BasePart üzerinde aerodinamik güçler hesaplamasına neden olur.
ExtentsCFrame
Fiziksel genişliklerin CFrame , fiziksel merkezini temsil eden BasePart 'in fiziksel uzantısı.
ExtentsSize
Fizik motoru tarafından, örneğin BasePart sırasında fiziksel gerçek boyutu, örneğin fizik motoru.
FrontSurface
The FrontSurface özelliği, bir parçanın negatif Z yönü için kullanılan yüzey türünü belirler.İki parçanın yüzleri birbirine yakın yerleştirildiğinde, aralarında bir ortak oluşturabilirler.
LeftSurface
The LeftSurface özelliği, bir parçanın negatif X yönü için kullanılan yüzey türünü belirler.İki parçanın yüzleri birbirine yakın yerleştirildiğinde, aralarında bir ortak oluşturabilirler.
LocalTransparencyModifier
The LocalTransparencyModifier özelliği yerel müşteriye sadece görünen bir çarpan Transparency dir.Müşteriden sunucuya kopyalanmaz ve bir parçanın belirli bir müşteri için görünmemesi gerektiğinde yararlıdır, örneğin oyuncu ilk kişi moduna yaklaştığında karakterin vücut parçalarını görmediğinde.
Bu özellik, yerel parçanın transparansını aşağıdaki formülle değiştirir ve sonuç değerleri 0 ve 1 arasında sıkıştırılır.
1 - (( 1 - Transparency ) × ( 1 - LocalTransparencyModifier ))
<th><code>Yerel Transparans Modifiye Edici</code></th><th>Sunucu Tarafı</th><th>Müşteri Tarafı</th></tr></thead><tbody><tr><td><code>0.5</code></td><td><code>0</code></td><td><code>0.5</code></td><td><code>0.5</code></td></tr><tr><td><code>0.5</code></td><td><code>0.25</code></td><td><code>0.5</code></td><td><code>0.625</code></td></tr><tr><td><code>0.5</code></td><td><code>0.5</code></td><td><code>0.5</code></td><td><code>0.75</code></td></tr><tr><td><code>0.5</code></td><td><code>0.75</code></td><td><code>0.5</code></td><td><code>0.875</code></td></tr><tr><td><code>0.5</code></td><td><code>1</code></td><td><code>0.5</code></td><td><code>1</code></td></tr></tbody>
Locked
The özelliği, bir parçanın (veya bir parçasının içinde bulunduğu) bir kısmının Studio'da tıklayarak seçilebilir olup olmadığını belirler.Bu özellik şu anda düzenlenmeyen çevre modelleri içindeki parçalarda en sık etkinleştirilir.
Kod Örnekleri
This code sample uses the concept of recursion to unlock all parts that are a descendant of a model.
-- Paste into a Script within a Model you want to unlock
local model = script.Parent
-- This function recurses through a model's heirarchy and unlocks
-- every part that it encounters.
local function recursiveUnlock(object)
if object:IsA("BasePart") then
object.Locked = false
end
-- Call the same function on the children of the object
-- The recursive process stops if an object has no children
for _, child in pairs(object:GetChildren()) do
recursiveUnlock(child)
end
end
recursiveUnlock(model)
Mass
Mass bir parçanın hacminin ve yoğunluğunun ürününü tanımlayan okuma yalnızca bir özelliktir. İşlev ile GetMass() döndürülür.
- Bir parçanın hacmi, kullanılan ve türüne bağlı olarak belirlenir, örneğin gibi.
- Bir parçanın yoğunluğu, belirtilmişse Material veya CustomPhysicalProperties tarafından belirlenir.
Massless
Bu özellik etkinleştirildiğinde, parça, kütlesi olan başka bir parçaya kaynaklanmış olduğu sürece montajın toplam kütlesine veya süspansiyonuna katkıda bulunmayacaktır.
Parça kendi kök parçasıysa AssemblyRootPart , bu parça için göz ardı edilecek ve hala normal bir parça gibi montajına mas ve sürtünme katkısı yapacak.Kütlesiz parçalar asla montaj kök parçası haline gelmez, montajdaki diğer tüm parçalar da kütlesiz olmadığı sürece.
Bu, arabanın kullanımını etkilemek istemediğiniz seçenekli aksesuarlar veya daha basit bir çarpışma meshesine kaynaklanan masifsiz bir çekme örsü gibi şeyler için yararlı olabilir.
Ayrıca bakın Birleşimler , kök parçaların ne olduğunu ve nasıl kullanılacağını belirten bir makale.
Material
The Material özelliği, bir parçanın dokusunu ve varsayılan fiziksel özelliklerini (CustomPhysicalProperties durumunda belirlenmediğinde) ayarlamanıza izin verir.Varsayılan Plastic malzeme çok hafif bir dokuya sahiptir, while the SmoothPlastic malzeme hiç dokuya sahip tümü.Bazı malzeme dokuları, örneğin DiamondPlate ve Granite gibi, çok görünür dokulara sahiptir.Her malzemenin dokusu güneş ışığını farklı yansıtır, özellikle de Foil .
Bu özelliği ayarladıktan sonra CustomPhysicalProperties etkinleştirmek, bir malzemenin varsayılan fiziksel özelliklerini kullanacaktır.durum, DiamondPlate çok yoğun bir malzemedirken Wood çok hafiftir.Bir parçanın yoğunluğu, arazideki suda yüzeye çıkıp çıkmayacağını belirler.
The Glass materyal değişiklikleri, biraz yansıtma (Reflectance benzeri) ve perspektif distorsiyonu uygulayarak orta grafik ayarlarında görüntü oluşturma davranışını değiştirir.Etki özellikle küre şeklindeki parçalarda belirgindir.Glass parçaların arkasındaki yarı saydam parçalar görünmez.
MaterialVariant
Sistem belirtilen MaterialVariant adı ve MaterialVariant yazile örneği arar Material .Eşleşen bir MaterialVariant durumbaşarıyla bulursa, varsayılan malzemeyi değiştirmek için bu örneği kullanır.Varsayılan malzeme, yerleştirilen malzeme veya üzerinde belirtilen bir geçersizlik olabilir.
Orientation
The Orientation özelliği, parçanın X , Y ve Z eksenleri üzerinde derecelerle dönüşünü tanımlar, bunu bir Vector3 kullanarak.Döndürmeler Y > X > Z sırasında uygulanır.Bu, doğru Euler açılardan farklıdır ve bunun yerine Tait-Bryan açılarını kullanır, ki bunlar yaw , pitch ve roll açıklar.
Ayrıca, bu özellik farklı bir sırayla dönüşüm uygulayan CFrame.Angles() yapıcıdan nasıl farklı olduğunu da belirtmek gerekir ( Z > Y > X ).Bir parçanın dönüşünü daha iyi kontrol etmek için, bunun yerine CFrame ayarlanması önerilir.
Bu özelliği ayarlarken, bu parçaya bağlı herhangi bir Welds veya Motor6Ds ile bağlantılı özellik, parçanın bağlı olduğu diğer parçalara göre hareket etmesine izin veren eşleşen C0 veya C1 özelliğini güncelleyecektir.WeldConstraints hareket sırasında da geçici olarak devre dışı bırakılıp yeniden etkinleştirilecektir.
Kod Örnekleri
Bu kod örneği bir parçayı sürekli olarak Y ekseninde döndürür.
local part = script.Parent
local INCREMENT = 360 / 20
-- Parçayı sürekli olarak döndür
while true do
for degrees = 0, 360, INCREMENT do
-- Sadece Y eksen dönüşü ayarlayın
part.Rotation = Vector3.new(0, degrees, 0)
-- Bunu yapmanın daha iyi bir yolu, CFrame'i ayarlamak olurdu
--part.CFrame = CFrame.new(part.Position) * CFrame.Angles(0, matematik.rad(derece), 0)
task.wait()
end
end
PivotOffset
Bu özellik, parçanın merkez noktasının CFrame 'dan ofsetini belirtir, bu da BasePart:GetPivot() ile çarptığı ile aynıdır BasePart.CFrame , çarptığı BasePart.PivotOffset .
Bu, eksenin yerel uzayda bir konuma ayarlanması için uygundur, ancak bir parçanın ekseninin dünya uzayında bir konuma ayarlanması yapılabilir:
local Workspace = game:GetService("Workspace")local part = Workspace.BluePartlocal desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)
Kod Örnekleri
This code sample shows a custom function for resetting the pivot of a model back to the center of that model's bounding box.
local function resetPivot(model)
local boundsCFrame = model:GetBoundingBox()
if model.PrimaryPart then
model.PrimaryPart.PivotOffset = model.PrimaryPart.CFrame:ToObjectSpace(boundsCFrame)
else
model.WorldPivot = boundsCFrame
end
end
resetPivot(script.Parent)
This code sample creates a clock at the origin with a minute, second, and hour hand, and makes it tick, displaying the local time.
local function createHand(length, width, yOffset)
local part = Instance.new("Part")
part.Size = Vector3.new(width, 0.1, length)
part.Material = Enum.Material.Neon
part.PivotOffset = CFrame.new(0, -(yOffset + 0.1), length / 2)
part.Anchored = true
part.Parent = workspace
return part
end
local function positionHand(hand, fraction)
hand:PivotTo(CFrame.fromEulerAnglesXYZ(0, -fraction * 2 * math.pi, 0))
end
-- Create dial
for i = 0, 11 do
local dialPart = Instance.new("Part")
dialPart.Size = Vector3.new(0.2, 0.2, 1)
dialPart.TopSurface = Enum.SurfaceType.Smooth
if i == 0 then
dialPart.Size = Vector3.new(0.2, 0.2, 2)
dialPart.Color = Color3.new(1, 0, 0)
end
dialPart.PivotOffset = CFrame.new(0, -0.1, 10.5)
dialPart.Anchored = true
dialPart:PivotTo(CFrame.fromEulerAnglesXYZ(0, (i / 12) * 2 * math.pi, 0))
dialPart.Parent = workspace
end
-- Create hands
local hourHand = createHand(7, 1, 0)
local minuteHand = createHand(10, 0.6, 0.1)
local secondHand = createHand(11, 0.2, 0.2)
-- Run clock
while true do
local components = os.date("*t")
positionHand(hourHand, (components.hour + components.min / 60) / 12)
positionHand(minuteHand, (components.min + components.sec / 60) / 60)
positionHand(secondHand, components.sec / 60)
task.wait()
end
Position
The Position özelliği, bir parçanın koordinatlarını bir Vector3 kullanarak tanımlar.Parçanın konumunu yansıtır CFrame, ancak ayrıca ayarlanabilir.
Bu özelliği ayarlarken, bu parçaya bağlı herhangi bir Welds veya Motor6Ds ile bağlantılı özellik, parçanın bağlı olduğu diğer parçalara göre hareket etmesine izin veren eşleşen C0 veya C1 özelliğini güncelleyecektir.WeldConstraints hareket sırasında da geçici olarak devre dışı bırakılıp yeniden etkinleştirilecektir.
ReceiveAge
Parçanın fiziğinin yerel istemci veya sunucuda son kez güncellendiğinden beri saniyeler içinde belirtir.Bu değer, parçanın fiziği olmadığında olacak 0``Class.BasePart.Anchored|Anchored``true ).
Reflectance
The Reflectance özelliği, bir parçanın gökyüzünü ne kadar yansıttığını belirler.Bir değer 0 , parçanın hiçbir şekilde yansıtıcı olmadığını gösterir ve bir değer 1 , parçanın tümüyle yansıtılması gerektiğini gösterir.
Yansıma, parça tamamen saydam olmadığı sürece Transparency etkilenmez, bu durumda yansıma hiçbir şekilde görünmeyecektir.Yansıtma, parçanın Material ına bağlı olarak göz ardı edilebilir veya edilemeyebilir.
ResizeIncrement
The ResizeIncrement özelliği, Resize() yöntemi tarafından kabul edilen en küçük boyut değişikliğini tanımlayan okunur sadece özelliktir.durum, bu seti olarak ayarladı; çünkü bireysel kiriş bölümlerinin boyutu 2×2×2 olduğundan.
ResizeableFaces
The ResizeableFaces özelliği, bir parçanın yeniden boyutlandırılabileceği farklı yüzleri tanımlamak için bir Faces nesnesi kullanır.BasePart çoğu uygulamada, örneğin Part ve WedgePart gibi, bu özellik tüm yüzleri içerir.Ancak, yalnızca iki yüze sahip olacak setini ayarlayacak, çünkü bu tür parçaların uzunluk boyutu iki olmalıdır.
Bu özellik, parçaları inşa etmek ve manipüle etmek için en yaygın olarak kullanılan araçlarla birlikte kullanılır ve bu bağlam dışında az kullanımı vardır.Handles sınıfı, Handles.Faces özelliğine sahip ve yalnızca bir parçada yeniden boyutlandırılabilecek yüzlerde tutamaçları görüntülemek için bu özellik ile birlikte kullanılabilir.
Kod Örnekleri
This code sample creates a Handles object and shows how to set the Faces property of the object. It also references ResizeableFaces of a part. Try placing this script in multiple kinds of parts to see how ResizeableFaces varies.
-- Put this Script in several kinds of BasePart, like
-- Part, TrussPart, WedgePart, CornerWedgePart, etc.
local part = script.Parent
-- Create a handles object for this part
local handles = Instance.new("Handles")
handles.Adornee = part
handles.Parent = part
-- Manually specify the faces applicable for this handle
handles.Faces = Faces.new(Enum.NormalId.Top, Enum.NormalId.Front, Enum.NormalId.Left)
-- Alternatively, use the faces on which the part can be resized.
-- If part is a TrussPart with only two Size dimensions
-- of length 2, then ResizeableFaces will only have two
-- enabled faces. For other parts, all faces will be enabled.
handles.Faces = part.ResizeableFaces
RightSurface
The RightSurface özelliği, bir parçanın pozitif X yönü için kullanılan yüzey türünü belirler.İki parçanın yüzleri birbirine yakın yerleştirildiğinde, aralarında bir ortak oluşturabilirler.
RootPriority
Bu özellik, kök parça sıralaması için diğer tüm kurallardan öncelikli olan -127 ve 127 arasındaki bir tamsayıdır.Anchored ve aynı Massless değeri paylaşmayan çoklu parça düşünüldüğünde, daha yüksek RootPriority değere sahip bir parça, daha düşük RootPriority değere sahip olanlardan öncelik kazanacaktır.
Bu özelliği kullanarak, bir montajın hangi parçasının kök parça olduğunu kontrol edebilir ve boyut değişiklikleri sırasında kök parçayı stabil tutabilirsiniz.
Ayrıca bakın Birleşimler , kök parçaların ne olduğunu ve nasıl kullanılacağını belirten bir makale.
Rotation
Üç eksen için parçanın derecelerde dönmesi.
Bu özelliği ayarlarken, bu parçaya bağlı herhangi bir Welds veya Motor6Ds ile bağlantılı özellik, parçanın bağlı olduğu diğer parçalara göre hareket etmesine izin veren eşleşen C0 veya C1 özelliğini güncelleyecektir.WeldConstraints hareket sırasında da geçici olarak devre dışı bırakılıp yeniden etkinleştirilecektir.
Size
Bir parçanın Size özelliği onun görsel boyutlarını belirler, while ExtentsSize fiziği motorunun kullandığı gerçek boyutu temsil eder, örneğin çarpışma tespiti .Bireysel boyutlar (uzunluk, genişlik, yükseklik) 0.001 kadar düşük ve 2048 kadar yüksek olabilir.Boyut boyutları 0.05 altında, parçanın boyutları görsel olarak gösterilecek görsel olarak gösterilecek gibi, parçanın boyutları 0.05 olacaktır.
Bir parçanın Size çeşitli ek şekillerde kullanılır:
- Kütlesini GetMass() tarafından verilen etkilemek için.
- Parçacıkların yerleştirileceği alanı belirlemek için ParticleEmitter ile. By to determine the area from which particles are spawned.
- Kısmen görüntülenen dikdörtgen prizmatı belirlemek için BlockMesh tarafından.
- Görüntülenen çubuğun boyutunu belirlemek için belirli Class.SpecialMesh``Class.SpecialMesh.MeshType|MeshTypes
- Aydınlatılacak alanı belirlemek için SurfaceLight tarafından.
Kod Örnekleri
This code sample constructs a pyramid by stacking parts that get progressively smaller. It also colors the parts so they blend between a start color and end color.
local TOWER_BASE_SIZE = 30
local position = Vector3.new(50, 50, 50)
local hue = math.random()
local color0 = Color3.fromHSV(hue, 1, 1)
local color1 = Color3.fromHSV((hue + 0.35) % 1, 1, 1)
local model = Instance.new("Model")
model.Name = "Tower"
for i = TOWER_BASE_SIZE, 1, -2 do
local part = Instance.new("Part")
part.Size = Vector3.new(i, 2, i)
part.Position = position
part.Anchored = true
part.Parent = model
-- Tween from color0 and color1
local perc = i / TOWER_BASE_SIZE
part.Color = Color3.new(
color0.R * perc + color1.R * (1 - perc),
color0.G * perc + color1.G * (1 - perc),
color0.B * perc + color1.B * (1 - perc)
)
position = position + Vector3.new(0, part.Size.Y, 0)
end
model.Parent = workspace
TopSurface
The TopSurface özelliği, bir parçanın pozitif Y yönü için kullanılan yüzey türünü belirler.İki parçanın yüzleri birbirine yakın yerleştirildiğinde, aralarında bir ortak oluşturabilirler.
Transparency
The Transparency özelliği, bir parçanın 0 ölçekte görünürlüğünü kontrol eder, 1 nerede 0 tamamen görünür (opak) ve 1 tamamen görünmez (hiç tümü).
Tamamen saydam olmayan parçalar hiçbir şekilde tümü, kısmen saydam nesnelerin bazı önemli görüntüleme maliyetleri vardır.Çok sayıda saydam parça sahip olmak sözleşme imzalamaetkileyebilir.
Transparan parçalar üst üste geldiğinde, render düzeni öngörülemez bir şekilde davranabilir, bu yüzden yarı saydam parçaların üst üste gelmesinden kaçınmalısınız.
Ayrıca bakın LocalTransparencyModifier yerel müşteriye sadece görünen bir çarpan olarak Transparency .
Kod Örnekleri
This code sample shows how a part can fade away when touched by a Humanoid then reappear a moment after to create a passable door.
-- Paste into a Script inside a tall part
local part = script.Parent
local OPEN_TIME = 1
-- Can the door be opened at the moment?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("Black")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("Bright blue")
end
local function onTouch(otherPart)
-- If the door was already open, do nothing
if debounce then
print("D")
return
end
-- Check if touched by a Humanoid
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("not human")
return
end
-- Perform the door opening sequence
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()
Yöntemler
AngularAccelerationToTorque
Parametreler
Dönüşler
ApplyAngularImpulse
Bu parçanın montajına anlık bir açısal güç dalgası uygular ve montajın dönmesine neden olur.
İtme sonucu olan açısal hız, montajın mass 'sine bağlıdır.Bu nedenle daha büyük montajları hareket ettirmek için daha yüksek bir hızlanma gereklidir.İtme, patlama veya çarpışma gibi anlık bir kuvvet uygulanması gereken durumlarda yararlıdır.
Parça, sunucu tarafından sahipleniyorsa bu işlev bir sunucudan çağrılmalıdır Script (bir LocalScript veya bir Script ile değil, RunContext set edilmiş Enum.RunContext.Client ).Parça, otomatik mülkiyet yoluyla bir müşteri tarafından sahipleniyorsa, bu işlev bir müşteri kriptinden veya bir sunucu kriptinden çağrılabilir; bir sunucu sahibi parçası için bir müşteri kriptinden çağırmak hiçbir etkiye sahip olmayacaktır.
Parametreler
Montaja uygulanacak bir açısal hareket vektörü.
Dönüşler
ApplyImpulse
Bu işlev, bu parçanın montajına anlık bir güç dalgası uygular.
Kuvvet montajın center of mass 'sında uygulanır, bu nedenle sonuç hareketi sadece lineer olacaktır.
İtme sonucu hız, montajın mass 'sine bağlıdır.Bu nedenle daha büyük montajları hareket ettirmek için daha yüksek bir hızlanma gereklidir.İtme, patlama veya çarpışma gibi anlık bir kuvvet uygulanması gereken durumlarda yararlıdır.
Parça, sunucu tarafından sahipleniyorsa bu işlev bir sunucudan çağrılmalıdır Script (bir LocalScript veya bir Script ile değil, RunContext set edilmiş Enum.RunContext.Client ).Parça, otomatik mülkiyet yoluyla bir müşteri tarafından sahipleniyorsa, bu işlev bir müşteri kriptinden veya bir sunucu kriptinden çağrılabilir; bir sunucu sahibi parçası için bir müşteri kriptinden çağırmak hiçbir etkiye sahip olmayacaktır.
Parametreler
Montaja uygulanacak lineer bir hızlanma vektörü.
Dönüşler
ApplyImpulseAtPosition
Bu işlev, dünya uzayındaki belirtilen konumda bu parçanın montajına anlık bir güç dalgası uygular.
Pozisyon montajın center of mass 'sinde değilse, dalga pozisyonel ve dönme hareketine neden olacaktır.
İtme sonucu hız, montajın mass 'sine bağlıdır.Bu nedenle daha büyük montajları hareket ettirmek için daha yüksek bir hızlanma gereklidir.İtme, geliştiricilerin aniden bir patlama veya çarpışma gibi bir kuvvet uygulanmasını istediği durumlarda yararlıdır.
Parça, sunucu tarafından sahipleniyorsa bu işlev bir sunucudan çağrılmalıdır Script (bir LocalScript veya bir Script ile değil, RunContext set edilmiş Enum.RunContext.Client ).Parça, otomatik mülkiyet yoluyla bir müşteri tarafından sahipleniyorsa, bu işlev bir müşteri kriptinden veya bir sunucu kriptinden çağrılabilir; bir sunucu sahibi parçası için bir müşteri kriptinden çağırmak hiçbir etkiye sahip olmayacaktır.
Parametreler
Montaja uygulanacak bir hızlanma vektörü.
Dürtüyü uygulamak için dünya uzayındaki konum.
Dönüşler
CanCollideWith
Parçaların birbiriyle çarpıp çarpımadığını döndürür.Bu işlev, iki parçanın çarpışma gruplarını dikkate alır.Belirtilen parça bir BasePart değilse bu işlev hata verir.
Parametreler
Çarpışma olasılığı kontrol edilen belirtilen parça.
Dönüşler
Parçaların birbiriyle çarpışabilir olup olmadığı.
CanSetNetworkOwnership
CanSetNetworkOwnership işlevi, bir parçanın ağ sahipliğini ayarlayabileceğinizi kontrol eder.
İşlevin dönüş değeri, bir hata ile karşılaşmadan BasePart:SetNetworkOwner() veya BasePart:SetNetworkOwnershipAuto() çağırabileceğinizi kontrol eder.Ağ sahipliğini değiştirebilir/okuyabilirseniz doğru döndürür, yoksa yapamadığınız nedeni bir diziolarak false döndürür.
Dönüşler
Ağ sahipliğini ve nedenini değiştirebilir veya okuyabilir misiniz.
Kod Örnekleri
This example checks whether or not the network ownership of the first BasePart named Part in the Workspace can be set.
local part = workspace:FindFirstChild("Part")
if part and part:IsA("BasePart") then
local canSet, errorReason = part:CanSetNetworkOwnership()
if canSet then
print(part:GetFullName() .. "'s Network Ownership can be changed!")
else
warn("Cannot change the Network Ownership of " .. part:GetFullName() .. " because: " .. errorReason)
end
end
GetConnectedParts
Objeye herhangi bir sert bağlantı ile bağlı bir parça tablosu döndürür.
Eğer recursive doğruysa, bu işlev, montajdaki tüm parçaları BasePart'a sert bağlı olarak döndürecektir.
Sert Bağlantılar
Bir ortak, iki parçayı bir araya getirdiğinde , bir ortak sert olur, eğer fiziği tarafından tamamen kilitlenirse.Bu yalnızca aşağıdaki ortak türlere uygulanır:
Parametreler
Dönüşler
GetJoints
Bu Parçaya bağlı olan tüm Eklemleri veya Kısıtları geri döndür.
Dönüşler
Parçaya bağlı tüm Eklemlerin veya Kısıtlamaların bir dizi.
GetMass
GetMass okunabilir Mass özellik değerini döndürür.
Bu işlev, Masa özelliğinden önce gelir. Geriye dönük uyumluluk için desteklenir; Masa özelliğini doğrudan kullanmalısınız.
Dönüşler
Parçanın kütlesi.
Kod Örnekleri
Bu örnek, 4x6x4 vida boyutlarıyla oyunun Çalışma Alanı'nda yeni bir parça, myPart, oluşturur. Parça da sabitlenir.
Sonra, myMass yeni parçanın kütlesine eşit olacak şekilde ayarlanır. Parçanın kütlesi yazım ifadesinin sonunda basılır:
Parçamın kütlesi ...
local myPart = Instance.new("Part")
myPart.Size = Vector3.new(4, 6, 4)
myPart.Anchored = true
myPart.Parent = workspace
local myMass = myPart:GetMass()
print("My part's mass is " .. myMass)
GetNetworkOwner
Bu parçanın ağ sahibi olan mevcut oyuncuyu veya nil sunucu durumunda döndürür.
Dönüşler
Bu parçanın ağ sahibi olan mevcut oyuncu veya nil sunucu durumunda.
GetNetworkOwnershipAuto
Oyun motoru bu parça için ağ sahibini otomatik olarak karar verirse gerçek döndürür.
Dönüşler
Oyun motorunun bu bölüm için ağ sahibini otomatik olarak belirlemesi.
GetNoCollisionConstraints
Dönüşler
GetRootPart
Bir montajın temel parçasını döndürür.Bir parça montajını CFrame kullanarak hareket ettirirken.Bu temel parçayı taşımak önemlidir (buna bağlı diğer tüm parçalar da buna göre hareket edecektir).Daha fazla bilgi Bileşenler makalesinde mevcuttur.
Bu işlev AssemblyRootPart özelliğinden önce gelir. Geriye dönük olarak desteklenir, ancak doğrudan AssemblyRootPart kullanmalısınız.
Dönüşler
Bir montajın temel parçası (birbirine bağlı bir dizi parça).
GetTouchingParts
Bu parça ile fiziksel olarak etkileşime giren tüm parçaların bir tablosunu döndürür.Parçanın kendisi CanCollide'yi yalan olarak ayarladıysa, bu işlev parçaya bağlı bir TouchInterest nesne olmadığı sürece boş bir tablo döndürür (yani bir şeyin dokunma etkinliğine bağlandığı anlamına gelir).Kesişmeyen ancak bitişik olan parçalar dokunma olarak kabul edilmez.Bu işlev, yukarıda açıklanan özel WorldRoot:GetPartsInPart() kurallarından daha fazla esneklik sağlayan ve yukarıda açıklanan özel TouchInterest kurallarından kaçınan önceki işlevdir.Bunun yerine WorldRoot:GetPartsInPart() kullanın.
Dönüşler
Bu parçayla çakışan ve bu parçayla çarpışabilen tüm parçaların bir tablosu.
GetVelocityAtPosition
Bu parçanın montajının verilen konuma göre lineer hızını döndürür.Kök parçadan başka bir montajdaki parçaların lineer hızını tanımlamak için kullanılabilir.Montajın açısal hızı yoksa, lineer hız her konum için daima aynı olacaktır.
Parametreler
Dönüşler
IsGrounded
Nesne bir yerde tutacak bir parçaya bağlıysa gerçek döndürür (örneğin bir Anchored parçası), aksi takdirde yalan döndürür.Anchored bir parçası olan bir montajda, diğer tüm parçalar yere sabitlenir.
Dönüşler
Nesne, yerinde tutacak bir parçaya bağlı olup olmadığı.
Resize
Bir nesnenin boyutunu, Studio yeniden boyutlandırma aracını kullanarak gibi değiştirir.
Parametreler
Yeniden boyutlandırılacak taraf.
Belirtilen tarafa ne kadar büyüyecek/küçülecek.
Dönüşler
Parçanın yeniden boyutlandırılması.
SetNetworkOwner
Verdiğiniz oyuncuyu bu ve tüm bağlı parçalar için ağ sahibi olarak ayarlar.OyuncuInstance nil olduğunda, sunucu bir oyuncudan ziyade sahibi olacak.
Parametreler
Oyuncunun parçanın ağ sahipliğine verilmesi.
Dönüşler
SetNetworkOwnershipAuto
Oyun motorunun dinamik olarak kimin parçanın fiziğini ele alacağına karar vermesine izin verin (müşterilerden biri veya sunucu).
Dönüşler
TorqueToAngularAcceleration
Parametreler
Dönüşler
IntersectAsync
Parçanın ve verilen dizedeki diğer parçaların kesişen geometrisinden yeni bir IntersectOperation oluşturur.Sadece Parts desteklenir, Terrain veya MeshParts değil.Clone() ile benzer şekilde, döndürülen nesne Parent ayarına sahip değildir.
Arayan parçadan aşağıdaki özellikler sonuç IntersectOperation 'a uygulanır:
Aşağıdaki görüntü karşılaştırmasında, IntersectAsync() mavi bloğu içeren bir tablo kullanarak mor bloğa çağrılır.Sonuçlanan IntersectOperation , her iki parçanın kesişen geometrisinin bir şekline dönüşür.

<figcaption>Ayrı parçalar</figcaption>

<figcaption>Sonuçlanan <code>Class.IntersectOperation</code></figcaption>
Notlar
- Orijinal parçalar başarılı bir kesişme işleminden sonra bozulmadan kalır.Çoğu durumda, orijinal parçaların tümünü ve çağrılan ile aynı yere taşımalısınız.
- Varsayılan olarak, sonraki kesişimin yüz renkleri orijinal parçaların Color özelliğinden ödünç alınır.Tüm kesişimi belirli bir renge değiştirmek için, özellik UsePartColor özelliğini true olarak ayarlayın.
- Kesişme işlemi 20,000 üçgenin üzerinde bir parça ile sonuçlanırsa, 20,000 üçgene basitleştirilecektir.
Parametreler
Kesişimde yer alan nesneler.
Sonuç Enum.CollisionFidelity olan değer için IntersectOperation .
Sonuç Enum.RenderFidelity olan değer PartOperation.
Dönüşler
Varsayılan adıyla sonuç IntersectOperation ile kesişiyor Birleşiyor .
SubtractAsync
Parçadan yeni bir UnionOperation oluşturur, verilen matristeki parçaların geometrisinden eksilerek.Sadece Parts desteklenir, Terrain veya MeshParts değil.Clone() ile benzer şekilde, döndürülen nesne Parent ayarına sahip değildir.
Kesintiler nedeniyle sonraki birleşimin boş olmayacağını unutmayın. Eğer işlem tamamen boş bir geometriye yol açacak olursa başarısız olur.
Aşağıdaki görüntü karşılaştırmasında, SubtractAsync() mor blok içeren bir tablo kullanarak mavi silindire çağrılır.Sonuçlanan UnionOperation blokun geometrisini silindirden çıkaran bir şekle dönüşür.

<figcaption>Ayrı parçalar</figcaption>

<figcaption>Sonuçlanan <code>Class.UnionOperation</code></figcaption>
Parametreler
Keskinliğe katılan nesneler.
Sonuç Enum.CollisionFidelity olan değer için UnionOperation .
Sonuç Enum.RenderFidelity olan değer PartOperation.
Dönüşler
Varsayılan adıyla sonuç UnionOperation ile birleştirme Union .
Kod Örnekleri
Bu örnek, bir parçayı nasıl çıkaracağınızı gösterir BasePart , böylece inkar edilmiş bir UnionOperation oluşturur.
local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- Çıkarma işlemi yapın
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- Eğer işlem başarılı olursa, aynı konuma yerleştirin ve çalışma alanına eşlik edin
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- Operasyon sonrasında bozulmayan orijinal parçaları yok edin
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
UnionAsync
Parçadan yeni bir UnionOperation ve verilen matristeki parçalar tarafından işgal edilen geometri oluşturur.Sadece Parts desteklenir, Terrain veya MeshParts değil.Clone() ile benzer şekilde, döndürülen nesne Parent ayarına sahip değildir.
Arayan parçadan aşağıdaki özellikler sonuç UnionOperation 'a uygulanır:
Aşağıdaki görüntü karşılaştırmasında, UnionAsync() mavi bloğa mor silindir içeren bir tablo kullanarak çağrılır.Sonuçlanan UnionOperation , her iki parçanın birleşik geometrisinin bir şekline dönüşür.

<figcaption>Ayrı parçalar</figcaption>

<figcaption>Sonuçlanan <code>Class.UnionOperation</code></figcaption>
Notlar
- Orijinal parçalar başarılı bir birleştirme işleminden sonra bozulmadan kalır.Çoğu durumda, orijinal parçaların tümünü ve çağrılan ile aynı yere taşımalısınız.
- Varsayılan olarak, sonraki birleşim her bir parçasının Color özelliğine saygı gösterir.Tüm birliği belirli bir renge değiştirmek için, özellik UsePartColor özelliğini true olarak ayarlayın.
- Bir birlik operasyonu 20,000 üçgenin üzerinde bir parçayla sonuçlanırsa, 20,000 üçgene basitleştirilecektir.
Parametreler
Çağrılan parça ile birleşime katılan nesneler.
Sonuç Enum.CollisionFidelity olan değer için UnionOperation .
Sonuç Enum.RenderFidelity olan değer PartOperation.
Dönüşler
Varsayılan adıyla sonuç UnionOperation ile birleştirme Union .
Kod Örnekleri
This example demonstrates how to combine the geometry of one BasePart with the geometry of other part(s) to form a UnionOperation.
local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- Perform union operation
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- If operation succeeds, position it at the same location and parent it to the workspace
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- Destroy original parts which remain intact after operation
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
Etkinlikler
TouchEnded
Bir parça, BasePart.Touched benzer koşullarda başka bir parçaya dokunmayı bıraktığında ateş eder.
Bu etkinlik, Workspace.TouchesUseCollisionGroups ile birlikte çalışarak, çarpışma gruplarının algılanması için kabul edilip edilmediğini belirlemek üzere çalışır.
Parametreler
Kod Örnekleri
This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.
local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("Touch started: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("Touch ended: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)
Touched
Dokunulmuş etkinliği, bir parça başka bir parça ile temasa geçtiğinde ateşlenir.durum, eğer PartA PartB ile çarparsa, PartA.Touched PartB ile ateş eder ve PartB.Touched PartA ile ateş eder.
Bu olay yalnızca fiziksel hareketin sonucu olarak ateşlenir, bu nedenle CFrame özelliği değiştirilirse parça başka bir parçayla üst üste gelirse ateşlenmez.Bu da en az bir parçanın çarpışma sırasında olmaması gerektiğini ifade eder not Anchored çarpışma sırasında.
Bu etkinlik, Workspace.TouchesUseCollisionGroups ile birlikte çalışarak, çarpışma gruplarının algılanması için kabul edilip edilmediğini belirlemek üzere çalışır.
Parametreler
Verdiği parça ile temasa giren diğer parça.
Kod Örnekleri
This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.
local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("Touch started: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("Touch ended: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)
This code sample demonstrates how to connect the BasePart.Touched event of multiple parts in a Model to one function.
local model = script.Parent
local function onTouched(otherPart)
-- Ignore instances of the model coming in contact with itself
if otherPart:IsDescendantOf(model) then
return
end
print(model.Name .. " collided with " .. otherPart.Name)
end
for _, child in pairs(model:GetChildren()) do
if child:IsA("BasePart") then
child.Touched:Connect(onTouched)
end
end