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 is an abstract base class for
For information on how BaseParts are grouped into simulated rigid bodies, see Assemblies .
Class.BasePart ( Terrain ) dahil olmak üzere ile etkileşime geçen birçok farklı nesne var.
- Birkaç BaseParts aynı anda hareket ettirilebilir Model içinde bir PVInstance:PivotTo() içine gruplandırılabilir. Ayrıca 2> Class.PVInstance:PivotTo()2> ile hareket edilirken aynı anda hareket edilebilir. See 5> Modeller5> .
- Bir SurfaceGui ın, bir parçanın yüzünde GuiObjects çizgiler. Ayrıca deneyimli kullanıcı arayüzü kontenjanları ı görüntüleyin.
- Class.附|Accessories bir BasePart ile eklenebilir ve parçaya ilişkin CFrames belirtilebilir. Bu genellikle fiziksel 0> Class.Limit0> nesneleri olarak kullanılır, ayrıca Attachments
- ParticleEmitter nesneler, üstlerinde bulunan BasePart içindeki hacimde düzenli olarak parçacıklar yaygın. Aşağıda Particle Emitterler bulunur.
- Açık nesnelerin ışığını PointLight gibi ışık nesneleri ortadan ışık ışıyor ışık nesneleri ışını ışıyor ışını ışıyor ışını ışıyor ışını ışıyor ışını ışıyor ışını ışıyor ışını ışıyor ışını ışıyor ışını ışıyor ış
Özet
Özellikler
Bir parçanın fiziksel olarak hareket edilemez olup olmadığını belirler.
Parçanın montajının açısal hızı.
Parça montajının dünya alanındaki parça merkezinde.
Parçanın montajının lineer hızı.
Parçanın montajının toplamı.
Kurbanın kök kısmına bir referans.
Bir parçanın arka yüzünün türünü belirler (+Z yönlendirmesi).
Bir parçanın alt yüzünün türünü belirler (-Y yönlendirimi).
Bir parçanın rengini belirler.
Dünyadaki BasePart 'in konumunu ve yönünü belirler.
Bir parçanın başka bir parçaya çarpışıp çarpışmayacağını belirler.
Parçanın yerel sorgu işlemlerinde dikkate alınıp alınmadığını belirler.
Parçanın Touched ve TouchEnded olaylarının parçada ne sıklıkta ateş edileceğini belirler.
Bir parçanın gölge oluşturup oluşturmadığını belirler.
Bir parçanın merkezindeki masa üzerindeki dünya konumunu açıklar.
Bir parçanın çarpışma grupadını açıklar.
Bir parçanın rengini belirler.
Parçanın mevcut fiziksel özelliklerini gösterir.
Bir parçanın birkaç fiziksel özelliğini belirler.
Parçalarda ve bileşenlerde havadan güçleri etkinleştirmek veya devre dışı bırakmak için kullanılır.
Class.BasePart 'in fiziksel varlıklarının BasePart kısmı.
Fiziksel boyutları BasePart fiziksel motoru tarafından dikkate alınan gerçek boyutu.
Bir parçanın Front yüzünün hangi tip bir yüzey olacağını belirler (-Z yönlendirimi).
Bir parçanın sol yüzünün türünü belirler (-X yönü).
Yalnızca yerel kliente görünür olan BasePart.Transparency ile ilgili bir çarpan belirleyin.
Bir parçanın Studio'da seçilebilir olup olmadığını belirler.
Parçanın miktarını, yoğunluğunun ve hacminin ürününü açıklar.
Parçanın kalıcı vücuttoplam masyana veya içine katkıda bulunduğunu belirler.
Bir parçanın tekstürünü ve varsayılan fiziksel özelliklerini belirler.
MaterialVariant ın adı.
Parçanın dünyadaki dönüşümünü açıklar.
Parçanın pivot'unun CFrame 'inden oluğunu belirtir.
Parçanın dünyadaki konumunu açıklar.
Son kaydedilen fiziksel güncellemeden bu yana kaydedilen süre.
Bir parçanın gökyüzü kutusunu ne kadar yansıttığını belirler.
Resize yöntemi tarafından izin verilen en küçük değişikliği açıklar.
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 (+X yönü).
Bir montajın kök kısmını belirlemede asıl kural.
Parçanın üç eksen için derece olarak dönme.
Bir parçanın boyutlarını (genişlik, yükseklik) belirler.
Bir parçanın üst yüzünün türünü belirler (+Y yönü).
Bir parçanın görülebilirliğini (parça gizliliğinin tersi) belirler.
Yöntemler
Kuruluşa bir kuvvet uygula.
Kuruluşun center of mass kullanımına bir impuls uygula.
Belirli bir pozisyondaki montaja bir impuls uygula.
Parçaların birbirleriyle çarpışabileceğini veya çarpışmayabileceğini belirler.
Bir parçanın ağ sahibi olup olmadığını kontrol eder.
Nesneye herhangi bir türde katlanmış bir bağlantıyla bağlanmış bir parça tablosu döndürür.
Bu Parçaya bağlı olan tüm Ortakları veya Sınırları iade edin.
Class.BasePart.Mass|Mass özelliğinin değerini iade eder.
Bu bölgenin ağ sahibi olan mevcut oyuncuyu veya sunucunun durumunda nul'u döndürür.
Oyun motoru bu bölüm için ağ sahibini otomatik olarak belirlerse geri döner.
Bir parçanın temel kısmını bir montajın geri döndürür.
Bu parçayla etkileşim kuran tüm BasePart.CanCollide gerçek parçaların bir tablosunu içerir.
Bu bileşenin montajına ilişkin verilen pozisyondaki parçanın lineer hızını iade eder.
Eğer nesne yerini alacak bir paraya bağlanıyorsa (örneğin bir Anchored parçası) geri döndürür, aksi takdirde geri döndürmez.
Stüdyo boyutlandırma aracını kullanarak nesnenin boyutunu değiştirmenin aynısını yapar.
Bu ve tüm bağlantılı parçalar için verilen oyuncuyu ağ sahibi olarak ayarlar.
Oyun motoru, kimin fiziğini ele alacağını dinamik olarak karar vermesine izin verir (bir klien veya sunucu).
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Parçanın ve diğer parçaların çakışma geometrisinden yeni bir IntersectOperation oluşturur.
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Verilen matrisindeki parçaların geometrisinden düşük olarak yeni bir UnionOperation oluşturur.
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Parçadan yeni bir UnionOperation oluşturur, plus birimde verilen matematiksel çizimin kaplandığı yer.
Bir PVInstance 'nin pivot'unu alır.
Tüm ataları ile birlikte PVInstance şeklini alır, böylece merkez noktası artık belirlenen PVInstances ile bulunur.
Etkinlikler
Fiziksel hareketin sonucu olarak bir parçanın başka bir parçaya dokunmasını durdurur.
Fiziksel hareketin sonucu olarak bir parça başka bir parçaya dokunduğunda ateş eder.
Özellikler
Anchored
Erişilebilir olup olmadığını belirlemek için <a href="/reference/engine/datatypes">Anchored</a> özelliği, parçanın fiziksel olarak hareket edebileceğini belirler. Açıklandığında, bir parça hiç yer değiştirmeyecek, diğer parçaların çarpışmasından, üst üste gelen parçaların çarpışması
Bir bağlantılı parça hala yer değiştirebilir, değiştirmenin CFrame veya Position ile, ve hala bir olmayan AssemblyLinearVelocity ve 1> Class.BasePart.AssemblyAngularVelocity|AssemblyAng
Son olarak, bir bağlantısız parça bir bağlantılı parça aracılığıyla bir nesne gibi bir Weld ile bağlanırsa, da ayrıca bağlanır. Eğer böyle bir bağlantı kırılırsa, parça tekrar fiziksel olarak etkilenebilir. Ayrıca bakın Assemblies için daha fazla ayrıntı.
Arazi üzerine bağlanan parçalarda ağ sahibi olma işlemi yapılamaz. Eğer bir parçanın bağlantı durumu sunucuda değişirse, ağ sahibi olma durumu olan parçanın ağ sahibi olması etkilenecektir.
Kod Örnekleri
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ü. Her saniyede radyans başına yön değişiminin oranını gösterir.
Madeni parçanın her noktasında aynı hız yönü.
Hızı doğrudan ayarlamak gerçekçi olmayan hareketlere yol açabilir. Torque veya AngularVelocity kısıtlayıcıyı kullanmak tercih edilir, yoksa BasePart:ApplyAngularImpulse() kullanılırsa hızı anında değiştirmeyi istiyorsanız.
Eğer parça başka bir servis tarafından sahipse, bu özellik bir Script (hizmet sunucus
AssemblyCenterOfMass
Tüm parçaların yerleştirilmesi için mass ve position değerleri hesaplanır.
Eğer montajın bağlantılı bir parçası varsa, bu parçanın merkezi masa olacak ve montajın merkezi masa olacak ve montaj sonsuz masaya sahip olacak.
Mass ortasını bilmek, montajın stabiliteyi korumasına yardımcı olabilir. Merkezden uygulanan bir güç, yalnızca lineer hızlanmayı tetiklemez, sadece açısal hızlanmayı tetikler. Düşük bir merkezden sahip bir montaj, yer çekimi etkisiyle ayakta kalmayı daha iyi hale getirecektir.
AssemblyLinearVelocity
Bu parçanın montajının lineer hız vektörü. Bu, montajın center of mass iletişimindeki değişim oranıdır.
Kolejin merkezinde değil, bir noktadaki hızı bilmek istiyorsanız, kullanın Class.BasePart:GetVelocityAtPosition() .
Doğrudan hızı ayarlamak gerçekçi olmayan hareketlere yol açabilir. Bir VectorForce kısıtlayıcısını kullanmak tercih edilir veya hızı anında değiştirmek istiyorsanız BasePart:ApplyImpulse() kullanılır.
Eğer parça başka bir servis tarafından sahipse, bu özellik bir Script (hizmet sunucus
AssemblyMass
Bu bölümün montajındaki tüm parts 'in toplamı. Massless olan ve montajın kök parçası olmayan parçalar montajın katkısına katkıda bulunmaz.
Eğer montajın bir bağlantılı parçası varsa, montajın masası sınırsızdır. Sınırsız bir şekilde bağlantılı olmayan montajların diğer fiziksel etkileşimleri sınırları aşabilir.
AssemblyRootPart
Bu özellik, BasePart adlı montajın kök kısmını temsil etmek için otomatik olarak seçildiğini gösterir. Aynı özellik, geliştiricilerin GetRootPart() ı çağırdığında döndürür.
Class.BasePart.RootPriority|RootPriority birimizin bileşimindeki bileşenleri değiştirerek kök kısmı değiştirilebilir.
Tüm aynıAssemblyRootPart'ı paylaşan parçalar aynı montajda bulunur.
Root kısımları hakkında daha fazla bilgi için, bak Birleştiricileri.
BackSurface
BackSurface özelliği, bir parçanın +Z yönü için kullanılan yüzeyin türünü belirler. Eğer iki parçanın yüzleri birbirlerine yanınca, ortak bir yaratabilirler. Motor olarak ayarlandığında, BasePart.BackSurfaceInput bir motorun ortak davranışını belirler.
Çoğu YüzeyTürü, BasePart.Material Plastik olarak ayarlanırsa parçanın yüzüne bir dokunat yapar. Bazı YüzeyTürleri - Halka, Motor ve SteppingMotor - bunun yerine 3D bir süsleyici içerir. Eğer bu özellik SurfaceSelection seçilirse, oyun
Kod Örnekleri
local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end
BottomSurface
En alt yüzey özelliği, bir parçanın -Y yönünde kullanılan yüzeyin türünü belirler. Eğer iki parçanın yüzleri birbirlerine yanında yerleştirilirse, ortalarında bir ortak oluşturabilirler. Eğer motor olarak ayarlandıysa, BasePart.BottomSurfaceInput motor ortaklarının davranışını belirler.
Çoğu YüzeyTürü, BasePart.Material Plastik olarak ayarlanırsa parçanın yüzüne bir dokunat yapar. Bazı YüzeyTürleri - Halka, Motor ve SteppingMotor - bunun yerine 3D bir süsleyici içerir. Eğer bu özellik SurfaceSelection seçilirse, oyun
Kod Örnekleri
local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end
BrickColor
BrickColor öğesi bir parçanın rengini belirler. Eğer parça bir BasePart.Material ı varsa, bu ayrıca malzeme dokusu renderlenirken kullanılan renkleri de belirler. For more control over the color, the BasePart.Color property can be used (it is a Color3 variant of this property). If Color ayarla, this property will use the closest BrickColor.
Bir parçanın diğer görsel özellikleri BasePart.Transparency ve BasePart.Reflectance tarafından belirlenir.
Kod Örnekleri
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)
CFrame
The CFrame özelliği, dünyadaki BasePart 'in konumunu ve yönünü belirler. Geometrideki ExtentsCFrame 'i temsil eder, ancak 1> Class.BasePart.ExtentsCFrame1> 'in fiziksel merkezindeki gerçek 4> Datatype.CFrame4> temsil ed
Bir parçada CFrame ayarlanırken, diğer katılımlar da parçaya göre hareket eder, ancak bir modeli tamamen hareket etmek için PVInstance:PivotTo() kullanılması önerilir, bir oyuncu karakterinin hareket edilmesi gibi.
Class.BasePart.Position ve BasePart.CFrame ayarlarının aksine, ayarlar CFrame içindeki parçayı her zaman doğru verir; yani: 1> çarpışma kontrolü yapılmaz1> ve fiziksel çözücü, par
Bir parçanın CFrame ile ilgili pozisyonları takip etmek için, bir Attachment ile işlevsel olabilir.
Kod Örnekleri
local part = script.Parent:WaitForChild("Part")
local otherPart = script.Parent:WaitForChild("OtherPart")
-- Reset the part's CFrame to (0, 0, 0) with no rotation.
-- This is sometimes called the "identity" CFrame
part.CFrame = CFrame.new()
-- Set to a specific position (X, Y, Z)
part.CFrame = CFrame.new(0, 25, 10)
-- Same as above, but use a Vector3 instead
local point = Vector3.new(0, 25, 10)
part.CFrame = CFrame.new(point)
-- Set the part's CFrame to be at one point, looking at another
local lookAtPoint = Vector3.new(0, 20, 15)
part.CFrame = CFrame.lookAt(point, lookAtPoint)
-- Rotate the part's CFrame by pi/2 radians on local X axis
part.CFrame = part.CFrame * CFrame.Angles(math.pi / 2, 0, 0)
-- Rotate the part's CFrame by 45 degrees on local Y axis
part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(45), 0)
-- Rotate the part's CFrame by 180 degrees on global Z axis (note the order!)
part.CFrame = CFrame.Angles(0, 0, math.pi) * part.CFrame -- Pi radians is equal to 180 degrees
-- Composing two CFrames is done using * (the multiplication operator)
part.CFrame = CFrame.new(2, 3, 4) * CFrame.new(4, 5, 6) --> equal to CFrame.new(6, 8, 10)
-- Unlike algebraic multiplication, CFrame composition is NOT communitative: a * b is not necessarily b * a!
-- Imagine * as an ORDERED series of actions. For example, the following lines produce different CFrames:
-- 1) Slide the part 5 units on X.
-- 2) Rotate the part 45 degrees around its Y axis.
part.CFrame = CFrame.new(5, 0, 0) * CFrame.Angles(0, math.rad(45), 0)
-- 1) Rotate the part 45 degrees around its Y axis.
-- 2) Slide the part 5 units on X.
part.CFrame = CFrame.Angles(0, math.rad(45), 0) * CFrame.new(5, 0, 0)
-- There is no "CFrame division", but instead simply "doing the inverse operation".
part.CFrame = CFrame.new(4, 5, 6) * CFrame.new(4, 5, 6):Inverse() --> is equal to CFrame.new(0, 0, 0)
part.CFrame = CFrame.Angles(0, 0, math.pi) * CFrame.Angles(0, 0, math.pi):Inverse() --> equal to CFrame.Angles(0, 0, 0)
-- Position a part relative to another (in this case, put our part on top of otherPart)
part.CFrame = otherPart.CFrame * CFrame.new(0, part.Size.Y / 2 + otherPart.Size.Y / 2, 0)
CanCollide
CanCollide bir parçanın fiziksel olarak başka parçalarla etkileşime geçip geçmeyeceğini belirler. Devre dışı bırakıldığında, diğer parçalar özgürce malzeme geçebilir. Dekorasyon için kullanılan parçalar genellikle dekorasyon için CanCollide kapalıdır, çünkü onlar fiziksel motor tarafından dikkate alınmaz.
Bir parça BasePart.Anchored değil ve CanCollide kapalıysa, sonunda Workspace.FallenPartsDestroyHeight tarafından yok edilebilir.
CanCollide devre dışı bırakıldığında, parçalar hala BasePart.Touched etkinliğini başlatabilir (ayrıca onlara dokunan diğer parçalar). Bunu BasePart.CanTouch ile devre dışı bırakabilirsiniz.
Çarpışma konusunda daha fazla bilgi için Çarpışma bakın.
Kod Örnekleri
-- 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
CanQuery, parçanın yerel sorgu işlemleri sırasında düşünülüp düşünülmediğini belirler, örneğin GetPartBoundsInBox veya Raycast. CanCollide ayrıca, CanQuery'yi
Bu özellikten ötesinde, bir OverlapParams veya RaycastParams nesneyi kullanarak, bir Datatype.Part Listesi kaynağının aşağının aşağının aşağının aşağının aşağının aşağının aşağının aşağının aşağının aşağının aşağının aşağ
CanTouch
Bu özellik, Touched
Bu çarpışma mantığının çarpışma grupları üzerindeki Workspace.TouchesUseCollisionGroups özelliği aracılığıyla sayılır true gruplarına saygı gösterilebilir. Eğer 2> true2> ise, çarpışmayan gruplardaki parçalar her iki çarpışma etkinli
Performans
Ayrıca, CanTouch ve CanCollide değerleri false olarak ayarlandığından, bu parçalar herhangi bir şekilde parça çarpışması
CastShadow
Bir parçanın gölge oluşturup oluşturmadığını belirler.
Performans artışı için tasarlanmamıştır Not bu özellik. Sadece gölgeleri kaydettiğiniz bölümlere kapatılmalıdır. Bu özellik, verilen bölüm için gölgelerin kast edilmesini sağlayan bir dis olmalıdır. Bu özellik için verilen bölüm için gölgelerin kast edilmesini sağlayan bir dis olmalıdır.
CenterOfMass
MassCenterOfMass öğesi, bir parçanın merkezindeki lokal pozisyonunu tanımlar. Bu tek bir parça montajıysa, bu dünya uzayından AssemblyCenterOfMass konuşlandırılmıştır. Basit Parts
CollisionGroup
Class.BasePart.CollisionGroup|CollisionGroup özelliği, parçanın çarpışma grubunun adını açıklar (maksimum 100 karakter). Parçalar varsayılan grubun adıyla başlar ("Default"). Bu değer boş olamaz.
Bu özellik kendisi replik olmasa da, motor içeriden diğer özel bir özellik aracılığıyla değerin çözülmesi için yedek kompatibilite sorunlarını çözmeye yardımcı olur.
Kod Örnekleri
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
Renk öğesi bir parçanın rengini belirler. Parça bir BasePart.Material ,sahipse, bu ayrıca malzeme doku renderlenirken kullanılan renkleri de belirler. Bu öğün ayarlandığında, BasePart.BrickColor , renk3 değerine en yakın renk kullanılır.
Bir parçanın diğer görsel özellikleri BasePart.Transparency ve BasePart.Reflectance tarafından belirlenir.
Kod Örnekleri
-- 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. Parça için özel fiziksel özellikler için özel değerler ayarlayabilirsiniz, Özel malzeme ve malzeme üstesinden. Motor, parçanın etkili fiziksel özelliklerini belirlerken üst düzey değerleri önceliklendirir. Aşağıdaki listedeki değerler sırayla en yüksek önceliğe sahi
- Parçanın özel fiziksel özellikleri
- Parçanın özel malzemesinin özelleştirilmiş fiziksel özellikleri
- Parçanın malzemesinin özelleştirilmiş fiziksel özellikleri parçanın malzemesinin üstesinden gelir
- Parçanın malzemesinin varsayılan fiziksel özellikleri
CustomPhysicalProperties
ÖzelleştiriciFizikselÖzellikleri, Part gibi bir şeyin yoğunluğunu, kayma kuvvetini ve elastikliğini özelleştirebilirsiniz.
Eğer etkinleştirilmiş, bu özellik fiziksel özellikleri yapılandırmanızı sağlar. Eğer devre dışı bırakılmışsa, bu fiziksel özellikler BasePart.Material ile belirlenir. Enum.Material için sayfayı içerir.
Kod Örnekleri
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
Doğru olduğunda ve Workspace.FluidForces aktif olduğunda, bu BasePart üzerindeki hava kuvvetlerini hesaplayan fiziksel motoru etkiler.
ExtentsSize
Fiziksel büyüklüğü, örneğin çarpışma algılayıcıda BasePart olarak algılanan Class.BasePart'ın aslı.
FrontSurface
FrontSurface özelliği, bir parçanın -Z yönü için kullanılan yüzeyin türünü belirler. İki parçanın yüzleri birbirlerine yanında yerleştirildiğinde, ortadaki bir bağlantıyı oluşturabilirler. Motor olarak ayarlandığında, BasePart.FrontSurfaceInput bir motor bağlantısının davranışını belirler.
Most SurfaceTypes bir parçanın yüzüne bir dokunun rendelemesini sağlar, BasePart.Material Plastik olarak ayarlandıysa bir 3D süslemesi. Hinge, Motor ve SteppingMotor gibi bazı yüzey tipleri, bir SurfaceSelection ile aynı oyun dünyasında vurgulanır. Eğer bu özellik <
Kod Örnekleri
local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end
LeftSurface
SolYüzey özelliği, bir parçanın -X yönünde kullanılan yüzey türünü belirler. İki parçanın yüzleri birbirine yanında yerleştirildiğinde, ortadaki bir ortak oluşturabilir. Motor olarak ayarlandığında, BasePart.LeftSurfaceInput bir motor ortağının davranışını belirler.
Most SurfaceTypes bir parçanın yüzüne bir dokunun rendelemesini sağlar, BasePart.Material Plastik olarak ayarlandıysa bir 3D süslemesi. Hinge, Motor ve SteppingMotor gibi bazı yüzey tipleri, bir SurfaceSelection ile aynı oyun dünyasında vurgulanır. Eğer bu özellik <
Kod Örnekleri
local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end
LocalTransparencyModifier
Class.BasePart.LocalTransparency özelliği, yalnızca yerel müşteri tarafından görülebilen BasePart.Transparency ile çarpan olarak kullanılır. Bu, klientten sunucuya kopyalanmaz ve yalnızca oyunun ilk kişi modunda oluşturulan bir parçanın görünmez ol
Bu özellik, yerel parçanın görünürlüğünü aşağıdaki formülle değiştirir, sonuç olarak 0 ve 1 arasında kısılır.
clientTransparency = 1 - ((1 - part.Transparency) * (1 - part.LocalTransparencyModifier))
<tbody><tr><td>0.5</td><td>0</td><td>0.5</td><td>0.5</td></tr><tr><td>0.5</td><td>0.25</td><td>0.5</td><td>0.625</td></tr><tr><td>0.5</td><td>0.5</td><td>0.5</td><td>0.75</td></tr><tr><td>0.5</td><td>0.75</td><td>0.5</td><td>0.875</td></tr><tr><td>0.5</td><td>1</td><td>0.5</td><td>1</td></tr></tbody>
Şeffaflık | Yerel Saydamlık Düzeltici | Sunucu-Taraflı Şeffaflık | Müşteri-Taraflı Saydamlık |
---|
Locked
Kilitli özellik, bir part (ya da bir model içinde bulunan) ile Roblox Studio'da tıklanarak seçilebilir. Bu özellik genellikle şu anda değiştirilmeyen ortam modellerindeki parçalarda kilit olarak etkinleş
Kod Örnekleri
-- 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 hacmi ve yoğunluğunun ürününü tanımlayan okuma yalnızca özelliktir. GetMass işlevi tarafından döndürülür.
- Bir parçanın yoğunluğu, onun Material veya CustomPhysicalProperties ile belirlenir, belirtilirse.
Massless
Bu özellik etkinleştirilmişse, BasePart parçası, onun montajı sırasında masaya sahip başka bir parçaya bağlanana kadar katkıda bulunmayacaktır.
Parça kendi kök kısmına göre AssemblyRootPart , bu parça için buzlanacak ve hala montaj için masa katkıda bulunacaktır, böylece bir parça olarak normal bir parça gibi hala katkıda bulunur. Montajı olmayan parçalar her zaman bir montaj kök parçası olmaz.
Bu, arabayı etkilemeyi istemediğiniz gibi görünür aksesuarlar için kullanışlı olabilir.
Ayrıca bakın Assemblies, kök parçalarının ne olduğunu ve onları nasıl kullanacağınızı gösteren bir makale.
Material
Malzeme özelliği, bir parçanın dokusunu ve varsayılan fiziksel özelliklerini (BasePart.CustomPhysicalProperties olmadığı takdirde) belirleme izin verir.Varsayılan plastik malzeme hiçbir dokuya sahip değildir ve SmoothPlastic malzemesi hiçbir dokuya sahip değildir.Bazı malzeme dokularının görünüm
Bu özelliği ayarlayarak BasePart.CustomPhysicalProperties etkinleştirirseniz, bir malzemenin varsayılan fiziksel özelliklerini kullanır. durum, DiamondPlate çok yoğun bir malzemedir, mientras Wood çok hafiftir. Bir parçanın yoğunluğu, yer ile suyun üstünde yüzeyeceğini belirler.
Cam malzeme, orta grafiklerde görünüm davranışını değiştirir. Bazı yansıtma efektleri (BasePart.Reflectance gibi) ve perspektif deformasyonunu uygular. Efekt özellikle küre şekilli parçalarda (BasePart.Shape setine Ball'a) yayılır. Cam malzeme ve Cam parçalar
Kod Örnekleri
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)
MaterialVariant
Sistem, belirli MaterialVariant ismiyle ve BasePart.Material yazbelirli bir MaterialService istemini arar. Eğer eşleşen bir MaterialVariant istemi bulursa, bu MaterialVariant istemini kullanır ve varsayılan malzemeyi değiştirmek için 1> Class.MaterialService1> içinde belirlenmiş bir üst malzemeyi kullanır.
Orientation
Yönlendirme özelliği, Vector3 kullanarak X, Y ve Z eksenleri etrafındaki parçanın dönme şeklini dereceler olarak a
Bu özellik herhangi bir Welds veya Motor6Ds bu parçaya bağlanırsa, eşleşen C0 veya 1> Class.JointInstance.C1|C11>
WeldSeconds ayrıca hareket sırasında geçici olarak devre dışı bırakılacak ve yeniden etkinleştirilecektir.
Kod Örnekleri
local part = script.Parent
local INCREMENT = 360 / 20
-- Rotate the part continually
while true do
for degrees = 0, 360, INCREMENT do
-- Set only the Y axis rotation
part.Rotation = Vector3.new(0, degrees, 0)
-- A better way to do this would be setting CFrame
--part.CFrame = CFrame.new(part.Position) * CFrame.Angles(0, math.rad(degrees), 0)
task.wait()
end
end
PivotOffset
Bu özellik, parçanın pivot'ının CFrame 'inden olan parçanın pivot'ının ofsetini belirtir, bu da part:GetPivot() ile aynıdır.
Bu, bir parçanın pivot'ını yerel alana ayarlamak için kolaydır, ancak bir parçanın pivot'ını dünya uzayına ayarlamak şu şekilde yapılabilir:
local part = workspace.BluePartlocal desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)
Kod Örnekleri
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)
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
Pozisyon özelliği, bir part ile ilgili koordinatları tanımlar. Bir Vector3 kullanıyor. Bu, parçanın BasePart.CFrame ile ilgili pozisyonunu yansıtır, ancak ayrıca ayarlanabilir.
Bu özellik herhangi bir Welds veya Motor6Ds bu parçaya bağlanırsa, eşleşen C0 veya 1> Class.JointInstance.C1|C11>
WeldSeconds ayrıca hareket sırasında geçici olarak devre dışı bırakılacak ve yeniden etkinleştirilecektir.
ReceiveAge
Bu, parçanın fiziğinin yerel klianda (veya sunucuda) son güncellenmesinden bu yana saniye olarak geri döndüğünü gösterir. Parça fiziği yoksa 0 döndürür
Reflectance
Yansıtma özelliği, bir partün gökyüzü kutusunu ne kadar yansıttığını belirler. Bir değer 0, parçanın hiç yansıtıcı olmadığını gösterir ve bir değer 1, parçanın tamamen yansıtıldığını gösterir.
Yansıtma BasePart.Transparency , parçanın tamamen透明 olmadığı durumda etkilenmez. Yansıtma BasePart.Material , parçanın boyutuna bağlı olarak yansıtma yoksayılabilir.
Kod Örnekleri
local part = script.Parent
local pointLight = Instance.new("PointLight")
pointLight.Brightness = 0
pointLight.Range = 12
pointLight.Parent = part
local touchNo = 0
local function blink()
-- Advance touchNo to tell other blink() calls to stop early
touchNo = touchNo + 1
-- Save touchNo locally so we can tell when it changes globally
local myTouchNo = touchNo
for i = 1, 0, -0.1 do
-- Stop early if another blink started
if touchNo ~= myTouchNo then
break
end
-- Update the blink animation
part.Reflectance = i
pointLight.Brightness = i * 2
task.wait(0.05)
end
end
part.Touched:Connect(blink)
ResizeIncrement
ResizeIncrement özelliği, BasePart:Resize() yönteminin en küçük boyut değişikliğini tanımlayan yalnızca okuma özelliği olan bir özelliktir. Bu, BasePart abstrakt sınıfının setine
Kod Örnekleri
-- 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
ResizeableFaces
ResizeableFaces özelliği (ile bir e değil, ResizeableFaces olarak) bir parçanın boyutunu 2'ye ayarlayabilen bir Yüzler
Kod Örnekleri
-- 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
RightSurface özelliği, bir parçanın +X yönü için kullanılan yüzeyin türünü belirler. İki parçanın yüzleri birbirine yanında yerleştirildiğinde, ortadaki bir bağlantı oluşturabilir. Motor olarak ayarlandığında, BasePart.RightSurfaceInput bir motor bağlantısının davranışını belirler.
Most SurfaceTypes bir parçanın yüzüne bir dokunun rendelemesini sağlar, BasePart.Material Plastik olarak ayarlandıysa bir 3D süslemesi yerine. Hinge, Motor ve SteppingMotor gibi bazı yüzeylerin özellikleri, SurfaceSelection .
Kod Örnekleri
local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end
RootPriority
Bu özellik, kök parçası sıralama için tüm diğer kuralların önünde gelen bir sayıdır. Aynı Anchored değerini paylaşan bir parça, daha yüksek Class.BasePart.Anchored|Anchored değerine
Bu özellik, bir montajın kök parçasını kontrol etmek için kullanılabilir ve boyut değiştirildiğinde kök parçasını sabit tutmak için kullanılabilir.
Ayrıca bakın Assemblies, kök parçalarının ne olduğunu ve onları nasıl kullanacağınızı gösteren bir makale.
Rotation
Parçanın üç eksen için derece olarak dönme.
Bu özellik herhangi bir Welds veya Motor6Ds bu parçaya bağlanırsa, eşleşen C0 veya 1> Class.JointInstance.C1|C11>
WeldSeconds ayrıca hareket sırasında geçici olarak devre dışı bırakılacak ve yeniden etkinleştirilecektir.
Size
Bir parçanın Size özelliği, onun görsel boyutlarını belirler,ken ExtentsSize fiziksel boyutları,
Parçanın boyutu, BasePart:GetMass() ile verilen masyayı belirler. Bir parçanın Size ı çeşitli diğer nesneler tarafından kullanılır:
- ParticleEmitter ile parçacıkların oluştuğu alanı belirlemek.
- BlockMesh to partially determine the rendered rectangular prism.
- SpecialMesh для определения размера render Mesh.
Kod Örnekleri
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
TopSurface özelliği, bir parçanın +Y yönü için kullanılan yüzeyin türünü belirler. İki parçanın yüzleri birbirlerine yanında yerleştirildiğinde, ortadaki bir bağlantı oluşturabilirler. Motor olarak ayarlandığında, BasePart.TopSurfaceInput bir motor bağlantısının davranışını belirler.
Çoğu YüzeyTürü, BasePart.Material Plastik olarak ayarlanırsa parçanın yüzüne bir dokunat yapar. Bazı YüzeyTürleri - Halka, Motor ve SteppingMotor - bunun yerine 3D bir süsleyici içerir. Eğer bu özellik SurfaceSelection seçilirse, oyun
Kod Örnekleri
local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end
Transparency
Görünürlük özelliği, 0 ile 1 arasındaki bir parçanın görünürlüğünü kontrol eder, nerede 0%'i (opake) tamamen görünür ve bir 1%'i (tümü) hiç görünmez.
BasePart.Reflectance çözünürlüğünü bir malzeme 1'e yaklaştırırsa, malzeme genel olarak daha az şeffaf hale gelir.
Gerçekten şeffaf parçalar hiç tümü, kısmen şeffaf nesnelerin bazı önemli görünme maliyetleri vardır. Birçok şeffaf parçaya sahip olmak oyunun sözleşme imzalamayavaşlatabilir.
Şeffaf parçalar çakıştığında, çizgi düzeltme sırasıyla yanlış olabilir - bu nedenle, çizgi düzeltmeyi çift katlayın.
Class.BasePart.LocalTransparency şeffaflığın yerel müşteriye sadece görünür olmasını sağlayan bir çarpanıdır.
Kod Örnekleri
-- 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()
local function makeXRayPart(part)
-- LocalTransparencyModifier will make parts see-through but only for the local
-- client, and it won't replicate to the server
part.LocalTransparencyModifier = 0.5
end
-- This function uses recursion to search for parts in the game
local function recurseForParts(object)
if object:IsA("BasePart") then
makeXRayPart(object)
end
-- Stop if this object has a Humanoid - we don't want to see-through players!
if object:FindFirstChildOfClass("Humanoid") then
return
end
-- Check the object's children for more parts
for _, child in pairs(object:GetChildren()) do
recurseForParts(child)
end
end
recurseForParts(workspace)
Yöntemler
AngularAccelerationToTorque
Parametreler
Dönüşler
ApplyAngularImpulse
Bu parçanın montajına anında bir kuvvet dalgası uygulanır, böylece montaj dönecektir.
Sonuçsal kuvvet hızı, hareketi daha büyük hale getiren hareket hızının mass ına dayanır. Böylece daha büyük hareket hızları için daha yüksek bir impuls gerekir. Impulslar patlama veya çarpışma gibi durumlarda anında uygulanan bir güç için kullanışlıdır.
Eğer parça başka bir sunucutarafından sahipse, bu işlev bir Script (hali hazır
Parametreler
Bir impuls olarak montaja uygulanacak bir güç vektörü.
Dönüşler
ApplyImpulse
Bu işlev, bu parçanın montajına anında güç artışı uygulayarak bunu yapar.
Güç, birleştirmenin center of mass uygulandığı yere uygulanır, bu yüzden sonuçta hareket sadece lineer olacaktır.
Bunun sonucu, hızlanma iletkeninin mass ına bağımlıdır. Böylece daha büyük hızlanma hareketleri için daha yüksek bir hızlanma gerekir. Impulslar, patlama veya çarpışma gibi anında bir güç uygulamak istediğiniz durumlarda yararlıdır.
Eğer parça başka bir sunucutarafından sahipse, bu işlev bir Script (hali hazır
Parametreler
Bir impuls olarak montaja uygulanacak bir güç vektörü.
Dönüşler
ApplyImpulseAtPosition
Bu işlev, bu parçanın montajına anında güç artışı uygulayarak, dünya uzayındaki belirli bir pozisyonda uygulanır.
Pozisyon center of mass değilse, impuls pozisyon ve dönme hareketine neden olur.
Bunun sonucu, iticiyi mass ile bağlantı kurar. Böylece daha büyük hacimli yapıları hareket ettirmek için daha yüksek bir itici gerekir. İmpulsler, geliştiricilerin anında bir güç uygulamak istediği durumlarda yararlıdır, örneğin patlama veya çarpışma gibi.
Eğer parça başka bir sunucutarafından sahipse, bu işlev bir Script (hali hazır
Parametreler
Bir impuls olarak montaja uygulanacak bir güç vektörü.
İmpuls'u uygulamak için dünya uzayındaki pozisyon.
Dönüşler
CanCollideWith
Parçaların birbirleriyle çarpışabileceğini veya çarpışmayabileceğini belirleyin. Bu işlev, iki parçanın çarpışma gruplarını göz önünde bulundurur. Bu işlev, belirlenen parçanın BirleşikParça olmadığı durumda hata alır.
Parametreler
Belirlenen parça çarpışabilirlik için kontrol ediliyor.
Dönüşler
Parçaların birbirleriyle çarpışabileceği.
CanSetNetworkOwnership
CanSetNetworkOwnership işlevi, bir parçanın ağ sahibi olup olmadığını kontrol eder.
İşlevin dönüş değeri, ağın sahibi olup olmadığınızı doğrular veya bir hata ile karşılaşmadan önce BasePart:SetNetworkOwner() veya BasePart:SetNetworkOwnershipAuto() çağırabilirsiniz. Gerçek dönüş değeri, ağın sahibini değiştirebilir/okuyabilirseniz için doğru veya gerçek dönüş de
Dönüşler
Ağ sahibiğini veya nedenini değiştirebilir misiniz veya okuyabilir misiniz.
Kod Örnekleri
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
Nesneye herhangi bir türde katlanmış bir bağlantıyla bağlanmış bir parça tablosu döndürür.
Eğer recursive doğruysa, bu işlev tüm parçaları BasePart'a sabit olarak bağlayacaktır.
Sahip Olmayan Parçalar
Bir parçanın iki parçayı birleştirdiğinde (Part0 → Part1), bir joint sabit olur eğer Part1 'in fiziği tamamen 2>Part02> tarafından kilitlenirse. Bu sadece şu özel birleşik tipleri için geçerlidir:
Parametreler
Dönüşler
GetJoints
Bu Parçaya bağlı olan tüm Ortakları veya Sınırları iade edin.
Dönüşler
Parça ile bağlantılı tüm Joint veya Constraints'ın bir matrisi.
GetMass
GetMass Mass özelliğinin değerini iade eder.
Bu işlev, Masaüstü kompatibilite için öngörülmüştür. Geçmişte desteklenmiş olsa da, Masaüstü özelliğini doğrudan kullanmanız önerilir.
Dönüşler
Parçanın masası.
Kod Örnekleri
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 bölgenin ağ sahibi olan mevcut oyuncuyu veya sunucunun durumunda nul'u döndürür.
Dönüşler
Bu bölgenin ağ sahibi olan mevcut oyuncu, yoksa sunucu durumunda sıfır.
GetNetworkOwnershipAuto
Oyun motoru bu bölüm için ağ sahibini otomatik olarak belirlerse geri döner.
Dönüşler
Oyun motoru bu bölüm için ağ sahibini otomatik olarak belirleyip belirlemez.
GetNoCollisionConstraints
Dönüşler
GetRootPart
Bir montajın temel kısmını iade eder. Bir CFrame kullanarak bir montajı hareket ettirirken, bu temel kısmı hareket etmek önemlidir (bu, bağlantılı tüm diğer parçaları da aynı şekilde hareket ettirecektir). Daha fazla bilgi için Assemblerler makalesine bakınız.
Bu işlev AssemblyRootPart özelliğinden önce var. Arka kompatibilite için destekleniyor, ancak AssemblyRootPart doğrudan kullanılmalıdır.
Dönüşler
Bir montajın temel kısmı (bileşik parçaları birbirine bağlayan kısmı).
GetTouchingParts
Bu bölümün fiziksel olarak etkileşim kurduğu tüm parçaların bir tablosunu içerir. Eğer parçanın kendisi
Dönüşler
Bu parçayla çarpışabilecek tüm parçaların bir tablosu.
GetVelocityAtPosition
Parçanın montajının bu bölümdeki belirli konumuna göre parçanın üretim hızını içerir. Bu, kök parçasının üretim hızını belirlemek için kullanılabilir. Eğer montajınızın üretim hızı yoksa, bu, her bir pozisyonda üretim hızının daima aynı olacağını garanti eder.
Parametreler
Dönüşler
IsGrounded
Eğer nesne bağlanan bir yere bağlanırsa (örneğin bir Anchored parçası) geri döndürür; aksi takdirde geri döndürmez. Bir nesnenin bir yere bağlandığında, diğer herhangi bir parça yerden bağlanır.
Dönüşler
Nesnenin yerini tutan bir parçaya bağlı olup olmadığı.
Resize
Stüdyo boyutlandırma aracını kullanarak nesnenin boyutunu değiştirmenin aynısını yapar.
Parametreler
Yeniden boyutlandırılacak yüz.
Belirlenen tarafta ne kadar büyüyeceği/küçüleceği.
Dönüşler
Parça büyütülür mü.
SetNetworkOwner
Bu ve tüm bağlantılı parçalar için verilen oyuncuyu ağ sahibi olarak ayarlar. PlayerInstance null olduğunda, sunucu bir oyuncu değil, ağ sahibi olacaktır.
Parametreler
Oyuncuya parçanın ağ sahibi olarak verilmiş.
Dönüşler
SetNetworkOwnershipAuto
Oyun motoru, kimin fiziğini ele alacağını dinamik olarak karar vermesine izin verir (bir klien veya sunucu).
Dönüşler
TorqueToAngularAcceleration
Parametreler
Dönüşler
IntersectAsync
Parçanın ve diğer parçaların geometrisinden oluşan yeni bir IntersectOperation oluşturur. Sadece Parts desteklenir, Terrain veya 1> Class.MeshPart
Çağrılan bölümden alınan aşağıdaki özellikler sonuçta IntersectOperation :
- Class.BasePart.Color|Color , Material , MaterialVariant , 0> Class.BasePart.Reflectance|Reflectance0> , Color3>
- Class.BasePart.Anchored|Anchored , Density , Elasticity , 0> Class.BasePart.ElasticityWeight|ElasticityWeight0> , 3> Class.BasePart.
Aşağıdaki görsel karşılaştırmasında, IntersectAsync() tüm blokları içeren bir tablo kullanarak çağrılır. Sonuç olarak IntersectOperation şekillendirilir.
Notlar
- Orijinal parçalar başarılı bir çarpıştırma işleminden sonra hasar görmez kalır. Çoğu durumda, tüm orijinal parçaları yeniden oluşturmalı ve çağırılan Destroy() ile aynı yere ebeveyn olmalıdır.
- Varsayılan olarak, sonuçlanan çarpışmanın yüz renkleri, orijinal parçalardaki Color özelliğinden ödünç alınır. Tüm çarpışmayı belirli bir renge değiştirmek için, UsePartColor özelliğini true olarak ayarlayın.
- Bir kesişim işlemi 20.000'den fazla üçgenle sonuçlanırsa, 20.000'e basılır.
Parametreler
Kavşakta katılan nesneler.
Sonuçta oluşturulan Enum.CollisionFidelity için IntersectOperation değerine eşdeğer.
Sonuçta oluşturulan Enum.RenderFidelity 'in PartOperation değeri.
Dönüşler
Varsayılan adla IntersectOperation ile sonuçlanır.
SubtractAsync
Parçadan yeni bir UnionOperation oluşturur, parçaların verilen matrisindeki geometriden düşük olarak. Sadece Parts desteklenir, Terrain veya 1> Class
Sonuçta birleştirmenin sonucu boş olamaz, çünkü çıkarımlar nedeniyle. Eğer işlem tamamen boş geometriye sonuçlanırsa, başarısız olur.
Aşağıdaki görsel karşılaştırmasında, SubtractAsync() purple block'ı içeren bir tablo kullanarak blue цилиндere çağrılır. Sonuçta ortaya çıkan UnionOperation blokun blok geometrisini gizleyen bir şekle çözülür.
Parametreler
Subtraction'a katılan nesneler.
Sonuçta oluşturulan Enum.CollisionFidelity için UnionOperation değeri.
Sonuçta oluşturulan Enum.RenderFidelity 'in PartOperation değeri.
Dönüşler
Varsayılan adla UnionOperation oluşturuldu.
Kod Örnekleri
local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- Perform subtract operation
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- If operation succeeds, position it at the same location and parent it to the workspace
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- Destroy original parts which remain intact after operation
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
UnionAsync
Parçadan yeni bir UnionOperation oluşturur, plus bölümlerin işaret edilen matrisdeki bölümlerin geometrisi. Sadece Parts desteklenir, not Terrain veya
Çağrılan bölümden alınan aşağıdaki özellikler sonuçta UnionOperation :
- Class.BasePart.Color|Color , Material , MaterialVariant , 0> Class.BasePart.Reflectance|Reflectance0> , Color3>
- Class.BasePart.Anchored|Anchored , Density , Elasticity , 0> Class.BasePart.ElasticityWeight|ElasticityWeight0> , 3> Class.BasePart.
Aşağıdaki görsel karşılaştırmasında, UnionAsync() purple cylinder'ı içeren bir tablo kullanarak çağrılır. Sonuç olarak UnionOperation şekillendirilir, her iki parçanın birleşik geometrisinin bir şeklini oluşturur.
Notlar
- Başarılı bir birleşme işleminden sonra orijinal parçalar hasar görmez. Çoğu durumda, tüm orijinal parçaları ortadan kaldırmalısınız ve çağrılan Destroy() ile aynı yere ebeveyn olarak ortaya çıkan UnionOperation ile aynı yere ebeveyn olmalısınız.
- Varsayılan olarak, sonuçta birleşen ünite her bir biriminin Color özelliğine saygı duyar. Bütün birliği belirli bir renge değiştirmek için, UsePartColor özelliğini true ile ayarlar.
- Bir Birliğin 20,000 üzerinde çıkan bir parçaya sonuçlanması durumunda, 20,000 üzerinde çıkan bir parçaya basitlenir.
Parametreler
Çağırılan kısmın üyesi olan nesneler.
Sonuçta oluşturulan Enum.CollisionFidelity için UnionOperation değeri.
Sonuçta oluşturulan Enum.RenderFidelity 'in PartOperation değeri.
Dönüşler
Varsayılan adla UnionOperation oluşturuldu.
Kod Örnekleri
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çanın BasePart.Touched ile benzer koşullarda başka bir parçaya dokunması durumunda ateş eder.
Bu etkinlik, Workspace.TouchesUseCollisionGroups ile ortak çalışarak, çarpışma gruplarının algılanıp algılanmadığını belirtmek için kullanılır.
Parametreler
Kod Örnekleri
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
Dokunulduğu etkinliği bir parçanın başka bir parçaya ile temas ettiğinde başlar. durum, ParçaA ile ParçaB çarpışırsa, 1> Class.BasePart.Touched|Par
Bu olay sadece fiziksel hareketin sonucu olarak çalışır, bu yüzden CFrame özelliği değiştirilmiş olsa bile oluşmayacaktır. Bu ayrıca çarpışma sırasında ortaya çıkan en az bir parçanın Class.BasePart.Anchored|Anchored olmadığ
Bu etkinlik, Workspace.TouchesUseCollisionGroups ile ortak çalışarak, çarpışma gruplarının algılanıp algılanmadığını belirtmek için kullanılır.
Parametreler
Verilen bölümlere temas eden diğer kısım.
Kod Örnekleri
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)
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