BasePart

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
Gezilemez

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:

Özet

Özellikler

Şuradan alınan Özellikler: PVInstance

Yöntemler

Şuradan alınan Yöntemler: PVInstance

Etkinlikler

Özellikler

Anchored

Paralel oku

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

Part Anchored Toggle

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

Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Paralel oku

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

Paralel oku

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

Paralel oku

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

Çoğaltılmamış
Paralel oku

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

Paralel oku

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.

Bölüm CFrame ayarı

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

Paralel oku

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.

Fade 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

Paralel oku

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

Paralel oku

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

Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Çoğaltılmamış
Paralel oku

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().

PhysicsService:RegisterCollisionGroup

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

Çoğaltılmamış
Paralel oku

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.

Character Health Body Color

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Paralel oku

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.

Set CustomPhysicalProperties

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

Paralel oku

When true , ve When Workspace.FluidForces etkinleştirildiğinde, fizik motorunun bu BasePart üzerinde aerodinamik güçler hesaplamasına neden olur.

ExtentsCFrame

Salt Okunur
Çoğaltılmamış
Paralel oku

Fiziksel genişliklerin CFrame , fiziksel merkezini temsil eden BasePart 'in fiziksel uzantısı.

ExtentsSize

Salt Okunur
Çoğaltılmamış
Paralel oku

Fizik motoru tarafından, örneğin BasePart sırasında fiziksel gerçek boyutu, örneğin fizik motoru.

FrontSurface

Paralel oku

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

Paralel oku

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

Gizli
Çoğaltılmamış
Paralel oku

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

Paralel oku

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.

Recursive Unlock

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Paralel oku

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.

Paralel oku

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

Çoğaltılmamış
Paralel oku

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

Gizli
Çoğaltılmamış
Paralel oku

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.

Parça Döndürücü

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

Paralel oku

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.BluePart
local 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.

Reset Pivot

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.

Clock Hands

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

Gizli
Çoğaltılmamış
Paralel oku

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

Gizli
Salt Okunur
Çoğaltılmamış
Paralel oku

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

Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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.

Resize Handles

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

Paralel oku

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

Paralel oku

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

Çoğaltılmamış
Paralel oku

Üç 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.

Çoğaltılmamış
Paralel oku

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.

Pyramid Builder

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

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

Paralel oku

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.

Fade 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

angAcceleration: Vector3
Varsayılan değer: ""
angVelocity: Vector3
Varsayılan değer: "0, 0, 0"

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

impulse: Vector3

Montaja uygulanacak bir açısal hareket vektörü.

Varsayılan değer: ""

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

impulse: Vector3

Montaja uygulanacak lineer bir hızlanma vektörü.

Varsayılan değer: ""

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

impulse: Vector3

Montaja uygulanacak bir hızlanma vektörü.

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

Dürtüyü uygulamak için dünya uzayındaki konum.

Varsayılan değer: ""

Dönüşler

()

CanCollideWith

Paralel yaz

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

part: BasePart

Çarpışma olasılığı kontrol edilen belirtilen parça.

Varsayılan değer: ""

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.

Check if a Part's Network Ownership 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

GetClosestPointOnSurface

Parametreler

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

Dönüşler

GetConnectedParts

Instances
Paralel yaz

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

recursive: boolean

Objeye herhangi bir joint tarafından bağlı bir parça tablosu.

Varsayılan değer: false

Dönüşler

Instances

GetJoints

Instances
Paralel yaz

Bu Parçaya bağlı olan tüm Eklemleri veya Kısıtları geri döndür.


Dönüşler

Instances

Parçaya bağlı tüm Eklemlerin veya Kısıtlamaların bir dizi.

GetMass

Paralel yaz

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

Bir Parçanın Masasını Bulmak

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

Paralel yaz

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

Paralel yaz

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

Instances

Dönüşler

Instances

GetRootPart

Paralel yaz

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

Instances

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

Instances

Bu parçayla çakışan ve bu parçayla çarpışabilen tüm parçaların bir tablosu.

GetVelocityAtPosition

Paralel yaz

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

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

Dönüşler

IsGrounded

Paralel yaz

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

normalId: Enum.NormalId

Yeniden boyutlandırılacak taraf.

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

Belirtilen tarafa ne kadar büyüyecek/küçülecek.

Varsayılan değer: ""

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

playerInstance: Player

Oyuncunun parçanın ağ sahipliğine verilmesi.

Varsayılan değer: "nil"

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

torque: Vector3
Varsayılan değer: ""
angVelocity: Vector3
Varsayılan değer: "0, 0, 0"

Dönüşler

IntersectAsync

Bekletir

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.

Two block parts overlapping

<figcaption>Ayrı parçalar</figcaption>
Parts intersected into a new solid model

<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

parts: Instances

Kesişimde yer alan nesneler.

Varsayılan değer: ""
collisionfidelity: Enum.CollisionFidelity

Sonuç Enum.CollisionFidelity olan değer için IntersectOperation .

Varsayılan değer: "Default"
renderFidelity: Enum.RenderFidelity
Varsayılan değer: "Automatic"

Dönüşler

Varsayılan adıyla sonuç IntersectOperation ile kesişiyor Birleşiyor .

SubtractAsync

Bekletir

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.

Longer block overlapping a cylinder

<figcaption>Ayrı parçalar</figcaption>
Block part subtracted from cylinder

<figcaption>Sonuçlanan <code>Class.UnionOperation</code></figcaption>

Parametreler

parts: Instances

Keskinliğe katılan nesneler.

Varsayılan değer: ""
collisionfidelity: Enum.CollisionFidelity

Sonuç Enum.CollisionFidelity olan değer için UnionOperation .

Varsayılan değer: "Default"
renderFidelity: Enum.RenderFidelity
Varsayılan değer: "Automatic"

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.

TemelParça:SubtractAsync()

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

Bekletir

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.

Block and cylinder parts overlapping

<figcaption>Ayrı parçalar</figcaption>
Parts joined together into a single solid union

<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

parts: Instances

Çağrılan parça ile birleşime katılan nesneler.

Varsayılan değer: ""
collisionfidelity: Enum.CollisionFidelity

Sonuç Enum.CollisionFidelity olan değer için UnionOperation .

Varsayılan değer: "Default"
renderFidelity: Enum.RenderFidelity
Varsayılan değer: "Automatic"

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.

BasePart:UnionAsync()

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

otherPart: BasePart

Kod Örnekleri

This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.

Touching Parts Count

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

otherPart: BasePart

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.

Touching Parts Count

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.

Model Touched

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