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 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 Decal , bir BasePart yüzüne kiremitli bir görüntüyü uygularken, bir Texture , bir pлительi görüntüyü yüzlere uygulayar. Görüntüleri ve desenleri görüntüleri görüntüleyin. See 2> Textures and Decals2> .
  • 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 ış
  • Ebeveyni bir Tool ile ve Tutulma Adı ile bir BasePart karakterleri tarafından tutulabilir. Ayrıca 1> deneyimli araçlar1> ile görüntülenir.

Özet

Özellikler

Şuradan alınan Özellikler: PVInstance

Yöntemler

Şuradan alınan Yöntemler: PVInstance

Etkinlikler

Özellikler

Anchored

Paralel oku

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

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

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

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

Çoğaltılmamış
Paralel oku

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

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

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

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

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

Paralel oku

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

Show All SurfaceTypes

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

Paralel oku

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

Show All SurfaceTypes

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

Çoğaltılmamış
Paralel oku

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

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)

CFrame

Paralel oku

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

Setting Part CFrame

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

Paralel oku

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

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

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

Paralel oku

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

Paralel oku

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

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

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

Çoğaltılmamış
Paralel oku

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

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

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

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

Paralel oku

Ö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

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

Doğru olduğunda ve Workspace.FluidForces aktif olduğunda, bu BasePart üzerindeki hava kuvvetlerini hesaplayan fiziksel motoru etkiler.

ExtentsCFrame

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

Class.BasePartnın fiziksel merkezini temsil eden BasePart ın fiziksel birimi.

ExtentsSize

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

Fiziksel büyüklüğü, örneğin çarpışma algılayıcıda BasePart olarak algılanan Class.BasePart'ın aslı.

FrontSurface

Paralel oku

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

Show All SurfaceTypes

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

Paralel oku

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

Show All SurfaceTypes

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

Gizli
Çoğaltılmamış
Paralel oku

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ıkYerel Saydamlık DüzelticiSunucu-Taraflı ŞeffaflıkMüşteri-Taraflı Saydamlık

Locked

Paralel oku

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

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 hacmi ve yoğunluğunun ürününü tanımlayan okuma yalnızca özelliktir. GetMass işlevi tarafından döndürülür.

Massless

Paralel oku

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.

Paralel oku

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

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)

MaterialVariant

Çoğaltılmamış
Paralel oku

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

Gizli
Çoğaltılmamış
Paralel oku

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

Part Spinner

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

Paralel oku

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.BluePart
local desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)
part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)

Kod Örnekleri

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

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

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

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

Paralel oku

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

Touch Blink

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

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

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

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

ResizeableFaces

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

ResizeableFaces özelliği (ile bir e değil, ResizeableFaces olarak) bir parçanın boyutunu 2'ye ayarlayabilen bir Yüzler

Kod Örnekleri

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

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

Show All SurfaceTypes

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

Paralel oku

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

Çoğaltılmamış
Paralel oku

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.

Çoğaltılmamış
Paralel oku

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:

Kod Örnekleri

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

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

Show All SurfaceTypes

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

Paralel oku

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

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()
X-Ray Vision

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

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

Dönüşler

ApplyAngularImpulse

void

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

impulse: Vector3

Bir impuls olarak montaja uygulanacak bir güç vektörü.


Dönüşler

void

ApplyImpulse

void

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

impulse: Vector3

Bir impuls olarak montaja uygulanacak bir güç vektörü.


Dönüşler

void

ApplyImpulseAtPosition

void

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

impulse: Vector3

Bir impuls olarak montaja uygulanacak bir güç vektörü.

position: Vector3

İmpuls'u uygulamak için dünya uzayındaki pozisyon.


Dönüşler

void

CanCollideWith

Paralel yaz

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

part: BasePart

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

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

Dönüşler

GetConnectedParts

Instances
Paralel yaz

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

recursive: bool

Bir nesneye herhangi bir şekilde bağlanmış joint ile bağlantılı bir tablo.

Varsayılan değer: false

Dönüşler

Instances

GetJoints

Instances
Paralel yaz

Bu Parçaya bağlı olan tüm Ortakları veya Sınırları iade edin.


Dönüşler

Instances

Parça ile bağlantılı tüm Joint veya Constraints'ın bir matrisi.

GetMass

Paralel yaz

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

Finding a Part's Mass

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

Paralel yaz

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

Instances

Dönüşler

Instances

GetRootPart

Paralel yaz

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

Instances

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

Instances

Bu parçayla çarpışabilecek tüm parçaların bir tablosu.

GetVelocityAtPosition

Paralel yaz

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

position: Vector3

Dönüşler

IsGrounded

Paralel yaz

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

normalId: Enum.NormalId

Yeniden boyutlandırılacak yüz.

deltaAmount: number

Belirlenen tarafta ne kadar büyüyeceği/küçüleceği.


Dönüşler

Parça büyütülür mü.

SetNetworkOwner

void

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

playerInstance: Player

Oyuncuya parçanın ağ sahibi olarak verilmiş.

Varsayılan değer: "nil"

Dönüşler

void

SetNetworkOwnershipAuto

void

Oyun motoru, kimin fiziğini ele alacağını dinamik olarak karar vermesine izin verir (bir klien veya sunucu).


Dönüşler

void

TorqueToAngularAcceleration

Parametreler

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

Dönüşler

IntersectAsync

Bekletir

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 :

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.

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

parts: Instances

Kavşakta katılan nesneler.

collisionfidelity: Enum.CollisionFidelity

Sonuçta oluşturulan Enum.CollisionFidelity için IntersectOperation değerine eşdeğer.

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

Sonuçta oluşturulan Enum.RenderFidelity 'in PartOperation değeri.

Varsayılan değer: "Automatic"

Dönüşler

Varsayılan adla IntersectOperation ile sonuçlanır.

SubtractAsync

Bekletir

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.

Longer block overlapping a cylinder

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

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

Parametreler

parts: Instances

Subtraction'a katılan nesneler.

collisionfidelity: Enum.CollisionFidelity

Sonuçta oluşturulan Enum.CollisionFidelity için UnionOperation değeri.

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

Sonuçta oluşturulan Enum.RenderFidelity 'in PartOperation değeri.

Varsayılan değer: "Automatic"

Dönüşler

Varsayılan adla UnionOperation oluşturuldu.

Kod Örnekleri

BasePart:SubtractAsync()

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

Bekletir

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 :

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.

Block and cylinder parts overlapping

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

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

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

parts: Instances

Çağırılan kısmın üyesi olan nesneler.

collisionfidelity: Enum.CollisionFidelity

Sonuçta oluşturulan Enum.CollisionFidelity için UnionOperation değeri.

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

Sonuçta oluşturulan Enum.RenderFidelity 'in PartOperation değeri.

Varsayılan değer: "Automatic"

Dönüşler

Varsayılan adla UnionOperation oluşturuldu.

Kod Örnekleri

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

otherPart: BasePart

Kod Örnekleri

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

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

otherPart: BasePart

Verilen bölümlere temas eden diğer kısım.


Kod Örnekleri

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