BasePart

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Tidak Dapat Dijelajahi

BasePart adalah kelas k

Untuk informasi tentang cara BaseParts diatur menjadi tubuh kaku, lihat Assemblies .

Ada banyak objek yang berinteraksi dengan BasePart (selain Terrain ) termasuk:

Rangkuman

Properti

Properti diwarisi dari PVInstance

Metode

Metode diwarisi dari PVInstance

Acara

Properti

Anchored

Baca Paralel

Properti Terancam menentukan apakah bagian akan tetap tidak bergerak oleh fisika. Saat diaktifkan, bagian tidak akan pernah berubah posisi karena gravitasi, tabrakan bagian lain, menggabungkan bagian lain, atau karena penyebab fisik lainnya. Sebagai hasilnya, dua bagian yang terancam tidak akan pernah mengaktifkan acara Class.BasePart

Sebuah bagian yang dipasang dapat masih diubah dengan mengubah CFrame atau Position, dan itu masih mungkin memiliki AssemblyLinearVelocity dan 1> Class.BasePart.RotationAngularVelocity|RotationAngular

Akhirnya, jika bagian yang tidak berancang dikaitkan dengan bagian yang berancang melalui objek seperti Weld, itu juga akan bertindak bersama. Jika bagian tersebut rusak, bagian itu mungkin akan terpengaruh oleh fisika lagi. Lihat Assemblies untuk lebih banyak rincian.

Kecakapan jaringan tidak dapat ditetapkan pada bagian yang terancang. Jika status jaringan bagian berganti di server, maka kedudukan jaringan bagian itu akan terpengaruh.

Contoh Kode

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

Tidak Direplikasi
Baca Paralel

Vektor kecepatan sudut ini dari penggabungan bagian ini. Ini adalah tingkat perubahan orientasi per detik.

Kecepatan sudut adalah sama di setiap titik pemasangan.

Mengatur kecepatan secara langsung dapat menyebabkan gerakan yang tidak realistis. Menggunakan batasan Torque atau AngularVelocity adalah preferensi, atau gunakan Class.BasePart:ApplyAngularImpulse() jika Anda ingin perubahan instan dalam kecepatan.

Jika bagian adalah dimiliki oleh server, property ini harus diubah dari server Script (bukan dari

AssemblyCenterOfMass

Hanya Baca
Tidak Direplikasi
Baca Paralel

Posisi dihitung melalui mass dan position dari semua bagian dalam pengaturan.

Jika komponen pada dasar pemasangan memiliki bagian tertancap, pusat massa bagian itu akan menjadi pusat massa komponen, dan komponen akan memiliki massa tak terbatas.

Mengetahui pusat massa dapat membantu pemasangan mempertahankan stabilitas. Sebuah kekuatan diterapkan ke pusat massa tidak akan menyebabkan peluatan tarikan, hanya linier. Sebuah pemasangan dengan pusat massa rendah akan memiliki waktu yang lebih baik tetap berdiri di bawah efek gravitasi.

AssemblyLinearVelocity

Tidak Direplikasi
Baca Paralel

Vektor kecepatan lini dari pemasangan bagian ini. Ini adalah tingkat perubahan posisi dari pemasangan bagian's center of mass dalam stud per detik.

Jika Anda ingin tahu kecepatan pada titik lain selain pusat massa pemasangan, gunakan BasePart:GetVelocityAtPosition().

Mengatur kecepatan secara langsung dapat menyebabkan gerakan yang tidak realistis. Menggunakan batas VectorForce adalah preferensi, atau menggunakan Class.BasePart:ApplyImpulse() jika Anda ingin perubahan instan dalam kecepatan.

Jika bagian adalah dimiliki oleh server, property ini harus diubah dari server Script (bukan dari

AssemblyMass

Hanya Baca
Tidak Direplikasi
Baca Paralel

Jumlah mass dari semua parts di bagian ini. Bagian yang Massless dan bukan bagian akar pengumpulan tidak akan berkontribusi pada Massasi.

Jika asasi memiliki bagian yang tersentuh, maka massa asasi dianggap tidak terbatas. Batas dan interaksi fisik lainnya antara asasi yang tidak terancang dengan perbedaan massa yang besar dapat menyebabkan ketidakstabilan.

AssemblyRootPart

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti ini menunjukkan bahwa BasePart secara otomatis dipilih untuk mewakili bagian akar assemblage. Ini adalah bagian yang sama yang dikembalikan ketika pengguna menelepon GetRootPart() .

Bagian akar dapat diubah dengan mengubah RootPriority dari bagian-bagian dalamAssembly.

Bagian yang semua berbagi AssemblerRootPart berada di dalam assemble sama.

Untuk lebih banyak informasi tentang bagian akar, lihat Assemblies .

BackSurface

Baca Paralel

Prop BackSurface menentukan jenis permukaan yang digunakan untuk arah +Z dari bagian. Ketika dua wajah bagian ditempatkan satu sama lain, mereka mungkin menciptakan persamaan di antara mereka. Jika diatur ke Motor, BasePart.BackSurfaceInput menentukan cara bagian bergabungan harus bersikap.

Sebagian besar jenis permukaan menyajikan tekstur pada wajah bagian jika BasePart.Material ditetapkan ke Plastik. Beberapa jenis permukaan - Hinge, Motor dan SteppingMotor - akan menyajikan adornment 3D alih-alih. Jika elemen ini dipilih di jendela Propinsi, itu akan ditampilkan di dunia game yang mirip dengan Class.SurfaceSelection

Contoh Kode

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

Baca Paralel

Propiedad BottomSurface menentukan jenis permukaan yang digunakan untuk arah -Y dari bagian. Ketika dua wajah bagian ditempatkan satu sama lain, mereka dapat menciptakan persamaan di antara mereka. Jika diatur ke Motor, BasePart.BottomSurfaceInput menentukan cara bagian bergabungan harus bersikap.

Sebagian besar jenis permukaan menyajikan tekstur pada wajah bagian jika BasePart.Material ditetapkan ke Plastik. Beberapa jenis permukaan - Hinge, Motor dan SteppingMotor - akan menyajikan adornment 3D alih-alih. Jika elemen ini dipilih di jendela Propinsi, itu akan ditampilkan di dunia game yang mirip dengan Class.SurfaceSelection

Contoh Kode

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

Tidak Direplikasi
Baca Paralel

Prop Color bata menentukan warna bagian. Jika bagian memiliki BasePart.Material, ini juga menentukan warna yang digunakan saat mengekspor tekstur material. Untuk lebih banyak mengontrol warna, prop Color dapat digunakan (itu adalah varian Color3 dari prop ini). Jika Color atur, prop Color akan menggunakan warna terdekat.

プロット lainnya dari sebuah bagian ditentukan oleh BasePart.Transparency dan BasePart.Reflectance.

Contoh Kode

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

Baca Paralel

Properti CFrame menentukan posisi dan orientasi Class.BasePart di dunia. Ini bertindak sebagai lokasi referensi arbitrer di geometri, tetapi BasePart mewakili Datatype.CFrame fisik pusatnya.

Ketika menetapkan CFrame di bagian, bagian lain yang bergabung juga diangkat relatif terhadap bagian, tetapi disarankan agar Anda menggunakan PVInstance:PivotTo() untuk menggerakkan seluruh model, seperti saat mengirim karakter pemain.

Tidak seperti menetapkan BasePart.Position, menetapkan BasePart.CFrame akan selalu menggerakkan bagian ke bagian yang tepat; dengan kata lain: CFrame dan solver fisika akan mencoba untuk menyelesaikan persel

Untuk menjaga posisi relatif terhadap bagian CFrame , an Attachment mungkin berguna.

Contoh Kode

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

Baca Paralel

CanCollide menentukan apakah bagian akan berinteraksi secara fisik dengan bagian lain. Saat dinonaktifkan, bagian lain dapat melewati pintu bata tanpa gangguan. Bagian yang digunakan untuk dekorasi biasanya memiliki CanCollide dinonaktifkan, karena mereka tidak perlu dianggap oleh mesin fisika.

Jika bagian tidak BasePart.Anchored dan memiliki CanCollide dinonaktifkan, itu mungkin jatuh dari dunia untuk akhirnya dihancurkan oleh Workspace.FallenPartsDestroyHeight .

Ketika CanCollide dinonaktifkan, bagian masih dapat menjalankan acara BasePart.Touched (juga bagian lain yang menyentuh mereka). Anda dapat menonaktifkan ini dengan BasePart.CanTouch .

Untuk lebih banyak informasi tentang tabrakan, lihat Tabrakan .

Contoh Kode

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

Baca Paralel

CanQuery menentukan apakah bagian dianggap selama operasi pencarian ruang, seperti GetPartBoundsInBox atau Raycast. CanCollide juga harus dinonaktifkan ketika menonaktifkan CanQuery. Fungsi-fungsi ini tid

Selainnya, juga mungkin untuk mengecualikan bagian yang merupakan anak dari daftar bagian yang diberikan menggunakan objek OverlapParams atau RaycastParams ketika memanggil fungsi pencarian fisik.

CanTouch

Baca Paralel

Properti ini menentukan apakah Class.BasePart.Touched|

Catat bahwa logika tabrakan ini dapat diatur untuk menghormati kumpulan tabrakan melalui properti Workspace.TouchesUseCollisionGroups. Jika true, bagian dalam kumpulan non-tabrakan akan mengabaikan kedua tabrakan 1> dan1> touch event, sehingga properti ini tidak relevan.

Kinerja

Ada kenaikan performa kecil pada bagian yang memiliki kedua CanTouch dan CanCollide tetap pada false, karena bagian ini tidak pernah perlu menghitung jenis

CastShadow

Baca Paralel

Menentukan apakah atau tidak bagian menggunakan bayangan.

Catat bahwa fitur ini tidak tidak dirancang untuk meningkatkan kinerja. Ini hanya boleh dinonaktifkan di bagian di mana Anda ingin menyembunyikan bayangan yang dibuat bagian. Menonaktifkan prop ini untuk bagian tertentu dapat menyebabkan artifak visual di bayangan yang dibuat pada bagian itu.

CenterOfMass

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti CenterOfMass menjelaskan lokasi lokal posisi pusat mass sebuah bagian. Jika ini adalah pengumpulan bagian tunggal, ini adalah AssemblyCenterOfMass yang dikonversi dari ruang dunia ke lokal. Pada Parts yang

CollisionGroup

Tidak Direplikasi
Baca Paralel

Properti CollisionGroup menggambarkan nama kelompok kollisi part (maksimum 100 karakter). Bagian dimulai dengan grup kelompok default (maximum 100 karakter). Valuasi ini tidak dapat kosong.

Meskipun property ini sendiri tidak dapat diklon, mesin secara internal mengkloning nilai melalui property pribadi lain untuk menyelesaikan masalah kompatibilitas mundur.

Contoh Kode

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

Tidak Direplikasi
Baca Paralel

Prop warna menentukan warna bagian. Jika bagian memiliki BasePart.Material, ini juga menentukan warna yang digunakan saat mengekspor tekstur material. Jika prop ini diatur, BasePart.BrickColor akan menggunakan warna terdekat dengan nilai Color3.

プロット lainnya dari sebuah bagian ditentukan oleh BasePart.Transparency dan BasePart.Reflectance.

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

CurrentPhysicalProperties menunjukkan prop fisik saat ini dari bagian. Anda dapat menetapkan nilai khusus untuk prop fisik per bagian, materi khusus , dan overwrite material. Engine men prioritaskan lebih banyak definisi granular saat menentukan prop fisik efektif dari bagian.Nilai dalam daftar berikut dalam urutan dari tinggi ke rendah:

  • Properti fisik khusus dari bagian
  • Properti fisik khusus dari bahan khusus bagian
  • Properti fisik khusus dari material overlay bagian
  • Properti fisik default dari bahan bagian

CustomPhysicalProperties

Baca Paralel

CustomPhysicalProperties memungkinkan Anda untuk menyesuaikan berbagai aspek fisik dari Part, seperti kepadatan, gesekan, dan elastisitasnya.

Jika diaktifkan, property ini memungkinkan Anda untuk mengkonfigurasi kepribadian fizikal ini. Jika dinonaktifkan, kepribadian fizikal ini ditentukan oleh BasePart.Material dari bagian. Halaman untuk Enum.Material berisi daftar dari berbagai bahan bagian.

Contoh Kode

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

Baca Paralel

Ketika benar, dan ketika Workspace.FluidForces diaktifkan, menyebabkan mesin fisika untuk menghitung kekuatan aerodinamik di BasePart ini.

ExtentsCFrame

Hanya Baca
Tidak Direplikasi
Baca Paralel

The CFrame of the physical extents of the BasePart , representing its physical center.

ExtentsSize

Hanya Baca
Tidak Direplikasi
Baca Paralel

Ukuran fisik sebenarnya dari BasePart seperti yang dilihat oleh mesin fisika, misalnya dalam deteksi kolisi.

FrontSurface

Baca Paralel

Propiedad FrontSurface menentukan jenis permukaan yang digunakan untuk arah -Z dari bagian. Ketika dua wajah bagian ditempatkan satu sama lain, mereka mungkin menciptakan persamaan di antara mereka. Jika diatur ke Motor, BasePart.FrontSurfaceInput menentukan cara bagian bergabungan harus bersikap.

Sebagian besar jenis permukaan menyajikan tekstur pada wajah bagian jika BasePart.Material ditetapkan ke Plastik. Beberapa jenis permukaan, termasuk Hinge, Motor, dan SteppingMotor, menyajikan adornment 3D alih-alih. Jika elemen ini dipilih di jendela Propinsi, itu akan ditampilkan dalam dunia game yang mirip dengan jenis <

Contoh Kode

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

Baca Paralel

Propiedad LeftSurface menentukan jenis permukaan yang digunakan untuk arah -X dari bagian. Ketika dua wajah bagian ditempatkan satu sama lain, mereka mungkin menciptakan persamaan di antara mereka. Jika diatur ke Motor, BasePart.LeftSurfaceInput menentukan cara bagian bergabungan harus bersikap.

Sebagian besar jenis permukaan menyajikan tekstur pada wajah bagian jika BasePart.Material ditetapkan ke Plastik. Beberapa jenis permukaan, termasuk Hinge, Motor, dan SteppingMotor, menyajikan adornment 3D alih-alih. Jika elemen ini dipilih di jendela Propinsi, itu akan ditampilkan dalam dunia game yang mirip dengan jenis <

Contoh Kode

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

Properti LocalTransparencyModifier adalah pengganda untuk BasePart.Transparency yang hanya terlihat oleh klien lokal. Ini tidak mengkloning dari klien ke server dan berguna ketika bagian yang seharusnya tidak rendah ketika rendah ke klien spesifik, seperti bagaimana pemain tidak melihat tubuh bagian tubuh p

Item ini mengubah transparansi bagian lokal melalui formula berikut, dengan hasil nilai yang diubah antara 0 dan 1.


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>
TransparansiPengubah Transparansi LokalTransparansi Sisi ServerTransparansi Pihak Klient

Locked

Baca Paralel

Properti Terkunci menentukan apakah part (atau model itu terkandung dalam) dapat dipilih di Roblox Studio dengan mengklik di atasnya. Properti ini paling sering diaktifkan di bagian-bagian dalam model lingkungan yang tidak sedang diedit saat ini. Roblox

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Massa adalah property yang hanya dibaca yang menggambarkan produk volume dan kedensitas bagian. Ini dikembalikan oleh fungsi GetMass.

Massless

Baca Paralel

Jika property ini diaktifkan, BasePart tidak akan berkontribusi terhadap total massa atau inersia pemasangannya selama itu dibungkus ke bagian lain yang memiliki massa.

Jika bagian itu adalah bagian akar sendiri menurut AssemblyRootPart, ini akan diabaikan untuk bagian itu, dan masih akan berkontribusi massa dan inersia ke bagiannya seperti bagian normal. Bagian yang tidak ber massa seharusnya tidak pernah menjadi bagian akar bagian lain kecuali semua bagian lain dalam konstruksi juga tidak ber massa.

Ini mungkin berguna untuk hal-hal seperti aksesori opsi pada kendaraan yang tidak Anda inginkan untuk mempengaruhi penanganan mobil atau meshes rendah yang dibentuk untuk menghasilkan kolision yang lebih sederhana.

Lihat juga Assemblies, artikel yang mendokumentasikan apa bagian akar dan cara menggunakannya.

Baca Paralel

Propietas Material memungkinkan seorang pembangun untuk menetapkan tekstur dan proporsi fisik bagian (dalam kasus bahwa BasePart.CustomPhysicalProperties tidak ditetapkan). Material Plastik default memiliki tekstur sangat ringan, dan material SmoothPlastic tidak memiliki tekstur sama semua. Beberapa material tekstur seperti DiamondPlate dan Granite memiliki tekstur yang sangat terlihat

Mengatur property ini kemudian mengaktifkan BasePart.CustomPhysicalProperties akan menggunakan prop fisik default dari sebuah bahan. kejadian, DiamondPlate adalah bahan yang sangat padat sementara Wood sangat ringan. Kepadatan sebuah bagian menentukan apakah itu akan mengapung dalam air tanah.

Bahan Kaca mengubah perilaku render pada pengaturan grafis sedang. Ini menerapkan sedikit refleksi (similar dengan BasePart.Reflectance ) dan perspektif distorsi. Efeknya terutama terlihat pada bola-bola berbentuk kubus (set BasePart.Shape untuk Bola). Objek dan Glass part behind Glass tidak terlihat.

Contoh Kode

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

Tidak Direplikasi
Baca Paralel

Sistem mencari instansi MaterialVariant dengan nama MaterialVariant yang ditentukan dan ketikBasePart.Material. Jika itu berhasil menemukan kejadianMaterialVariant yang cocok, itu menggunakan instansi MaterialVariant ini untuk mengganti material bawaan. Material bawaan dapat menjadi material bawaan atau jenis overlay yang ditentukan dalam MaterialService

Orientation

Tersembunyi
Tidak Direplikasi
Baca Paralel

Prop Orientasi menggambarkan rotasi bagian dalam derajat di sekitar sumbu X, Y dan Z menggunakan Vector3. Rotasi diterapkan dalam urutan Y → X → Z

Ketika menetapkan property ini, apa pun Welds atau Motor6Ds yang terhubung ke bagian ini akan memiliki property yang cocok C0 atau 2>Class.JointInstance.C1|C12> yang

WeldSeconds juga akan dinonaktifkan sementara dan direaktifkan kembali selama pindahan.

Contoh Kode

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

Baca Paralel

Properti ini menentukanOffset bagian dari pivotnya dari CFrame, yang adalah part:GetPivot() sama dengan part.CFrame * part.PivotOffset .

Ini mudah untuk menetapkan pivot ke lokasi di ruang lokal , tetapi menetapkan pivot bagian ke lokasi di ruang dunia dapat dilakukan sebagai berikut:


local part = workspace.BluePart
local desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)
part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)

Contoh Kode

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

Propiedad Posisi menjelaskan koordinat dari sebuah part menggunakan Datatype.Vector3 . Ini mengambil posisi dari bagian's Vector3 , namun itu juga dapat diatur.

Ketika menetapkan property ini, apa pun Welds atau Motor6Ds yang terhubung ke bagian ini akan memiliki property yang cocok C0 atau 2>Class.JointInstance.C1|C12> yang

WeldSeconds juga akan dinonaktifkan sementara dan direaktifkan kembali selama pindahan.

ReceiveAge

Tersembunyi
Hanya Baca
Tidak Direplikasi
Baca Paralel

Ini mengembalikan waktu dalam detik karena fisika bagian terakhir diperbarui pada klien lokal (atau server). Mengembalikan 0 ketika bagian tidak memiliki fisika (terancang)

Reflectance

Baca Paralel

Propietas Refleksi menentukan seberapa banyak part mengambil langit.Nilai 0 menunjukkan bahwa bagian tidak mencerminkan sama semua, dan nilai 1 menunjukkan bahwa bagian seharusnya mencerminkan sepenuhnya.

Refleksi tidak terpengaruh oleh BasePart.Transparency, kecuali jika bagian itu benar-benar transparan, dalam hal ini refleksi tidak akan rendah sama semua. Refleksi mungkin atau mungkin tidak diabaikan tergantung pada BasePart.Material bagian.

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Prop ResizeIncrement adalah prop yang hanya dibaca yang menggambarkan perubahan kecil dalam ukuran yang diizinkan oleh metode BasePart:Resize(). Ini berbeda antara implementasi dari BasePart kelas abstrak. kejadian, Part memiliki

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti ResizeableFaces (dengan sebuah e , bukan ResizeableFaces) menggambarkan menggunakan objek Wajah untuk menunjukkan

Contoh Kode

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

Baca Paralel

Propiedad RightSurface menentukan jenis permukaan yang digunakan untuk arah +X dari bagian. Ketika dua wajah bagian ditempatkan satu sama lain, mereka dapat menciptakan persamaan di antara mereka. Jika diatur ke Motor, BasePart.RightSurfaceInput menentukan cara bagian bergabungan harus bersikap.

Sebagian besar jenis permukaan menyajikan tekstur pada wajah bagian jika BasePart.Material ditetapkan ke Plastik. Beberapa jenis permukaan, termasuk Hinge, Motor, dan SteppingMotor, akan menyajikan adornment 3D alih-alih. Jika elemen ini dipilih di jendela Propinsi, itu akan ditampilkan dalam dunia game yang mirip dengan j

Contoh Kode

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

Baca Paralel

Properti ini adalah angka antara -127 dan 127 yang mengambil prioritas atas semua aturan lain untuk urutkanbagian akar. Saat mengconsiderasi beberapa bagian yang bukan Anchored dan berbagi nilai Massless yang sama, bag

Anda dapat menggunakan property ini untuk mengontrol bagian mana dari sebuahAssembly yang merupakan bagian akar dan menjaga bagian akar tetap stabil jika ukuran berubah.

Lihat juga Assemblies, artikel yang mendokumentasikan apa bagian akar dan cara menggunakannya.

Rotation

Tidak Direplikasi
Baca Paralel

Rotasi bagian dalam derajat untuk tiga sumbu.

Ketika menetapkan property ini, apa pun Welds atau Motor6Ds yang terhubung ke bagian ini akan memiliki property yang cocok C0 atau 2>Class.JointInstance.C1|C12> yang

WeldSeconds juga akan dinonaktifkan sementara dan direaktifkan kembali selama pindahan.

Tidak Direplikasi
Baca Paralel

Properti Size sebuah bagian menentukan dimensi visual nya, sementara ExtentsSize mewakili ukuran yang sebenarn

Ukuran bagian menentukan massanya yang diberikan oleh BasePart:GetMass() . Sebuah bagian's Size digunakan oleh berbagai objek lainnya:

Contoh Kode

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

Prop TopSurface menentukan jenis permukaan yang digunakan untuk arah +Y dari bagian. Ketika dua wajah bagian ditempatkan satu sama lain, mereka mungkin menciptakan persamaan di antara mereka. Jika diatur ke Motor, BasePart.TopSurfaceInput menentukan cara bagian bergabungan harus bersikap.

Sebagian besar jenis permukaan menyajikan tekstur pada wajah bagian jika BasePart.Material ditetapkan ke Plastik. Beberapa jenis permukaan - Hinge, Motor dan SteppingMotor - akan menyajikan adornment 3D alih-alih. Jika elemen ini dipilih di jendela Propinsi, itu akan ditampilkan di dunia game yang mirip dengan Class.SurfaceSelection

Contoh Kode

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

Baca Paralel

Propinsi Transparansi mengontrol keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluruhan keseluru

BasePart.Reflectance dapat mengurangi keseluruhan transparansi sebuah bata jika diatur pada nilai dekat 1.

Sementara bagian yang benar-benar transparan tidak rendah sama semua, objek yang transparan sebagian memiliki beberapa biaya rendah. Memiliki banyak bagian translucent dapat memperlambat pelaksanaangame.

Ketika bagian transparan bertabrakan, urutan render dapat bertindak tidak dapat diprediksi - cobalah untuk menjaga bagian semi-transparan tetap bertabrakan untuk menghindari ini.

Class.BasePart.LocalTransparencyModifier adalah pengganda Transparansi yang hanya terlihat bagi klien lokal.

Contoh Kode

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)

Metode

AngularAccelerationToTorque

Parameter

angAcceleration: Vector3
angVelocity: Vector3
Nilai Default: "0, 0, 0"

Memberikan nilai

ApplyAngularImpulse

void

Menerapkan dorongan kekuatan sudut instan ke bagian ini, menyebabkan bagian ini berputar.

Kecepatan sudut yang dihasilkan dari impuls bergantung pada mass . Jadi, impuls yang lebih besar diperlukan untuk menghindari lebih banyak assemblei yang lebih besar. Impuls berguna untuk kasus di mana Anda ingin menerapkan kekuatan secara instan, seperti ledakan atau tabrakan.

Jika bagian adalah dimiliki oleh server, fungsi ini harus dipanggil dari server Script (bukan

Parameter

impulse: Vector3

Sebuah vektor kekuatan yang akan diterapkan ke pengumpulan sebagai impuls.


Memberikan nilai

void

ApplyImpulse

void

Fungsi ini menerapkan dorongan kekuatan instan ke penggunaan bagian ini.

Kekuatan diterapkan di pusat center of mass , jadi gerakan yang dihasilkan hanya akan lineer.

Kecepatan yang dihasilkan dari impuls bergantung pada mass . Jadi, impuls yang lebih besar diperlukan untuk menghindari lebih banyak assemblei yang lebih besar. Impuls berguna untuk kasus di mana Anda ingin menerapkan kekuatan secara instan, seperti ledakan atau tabrakan.

Jika bagian adalah dimiliki oleh server, fungsi ini harus dipanggil dari server Script (bukan

Parameter

impulse: Vector3

Sebuah vektor kekuatan yang akan diterapkan ke pengumpulan sebagai impuls.


Memberikan nilai

void

ApplyImpulseAtPosition

void

Fungsi ini menerapkan dorongan kekuatan instan ke pengaturan bagian ini, di posisi yang ditentukan dalam ruang dunia.

Jika posisi tidak di pusat pemasangan center of mass, impuls akan menyebabkan gerakan posisi dan rotasi.

Kecepatan yang dihasilkan dari impuls bergantung pada mass . Jadi, impuls yang lebih besar diperlukan untuk menghindari lebih banyak assemblei yang lebih besar. Impuls berguna untuk kasus di mana pengembang ingin menerapkan kekuatan secara instan, seperti ledakan atau tabrakan.

Jika bagian adalah dimiliki oleh server, fungsi ini harus dipanggil dari server Script (bukan

Parameter

impulse: Vector3

Sebuah vektor kekuatan yang akan diterapkan ke pengumpulan sebagai impuls.

position: Vector3

Posisi, di ruang dunia, untuk menerapkan impuls.


Memberikan nilai

void

CanCollideWith

Tulis Paralel

Mengembalikan apakah bagian dapat bertabrakan satu sama lain atau tidak. Fungsi ini mengambil kelompok tabrakan dari dua bagian. Fungsi ini akan berhasil jika bagian yang ditentukan bukan Bagian Dasar.

Parameter

part: BasePart

Bagian yang ditentukan diperiksa untuk kesesuaian.


Memberikan nilai

Apakah bagian dapat bertabrakan satu sama lain.

CanSetNetworkOwnership

Fungsi CanSetNetworkOwnership memeriksa apakah Anda dapat mengatur kepemilikan jaringan bagian.

Nilai kembali fungsi mengevaluasi apakah Anda dapat memanggil BasePart:SetNetworkOwner() atau BasePart:SetNetworkOwnershipAuto() tanpa menghadapi kesalahan. Itu mengembalikan true jika Anda dapat mengubah/membaca kepemilikan jaringan, atau mengembalikan false dan alasan Anda tidak bisa, sebagai string.


Memberikan nilai

Apakah Anda dapat mengubah atau membaca kepemilikan jaringan dan alasan.

Contoh Kode

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

Parameter

position: Vector3

Memberikan nilai

GetConnectedParts

Instances
Tulis Paralel

Mengembalikan tabel bagian yang terhubung ke objek dengan jenis tali keras apa pun.

Jika recursive benar, fungsi ini akan mengembalikan semua bagian dalam pengaturan yang kuat terhubung ke BasePart.

Gerakan yang kaku

Ketika koneksi bersama menghubungkan dua bagian bersama-sama (Part0 → Part1) , koneksi bersama kaku jika fisika Part1 benar-benar terkunci oleh 1> Part01> . Ini hanya berlaku untuk jenis koneksi berikut:

Parameter

recursive: bool

Tabel bagian yang terhubung ke objek dengan jenis apa pun dari joint .

Nilai Default: false

Memberikan nilai

Instances

GetJoints

Instances
Tulis Paralel

Kembalikan semua Joints atau Constraint yang terhubung ke Bagian ini.


Memberikan nilai

Instances

Sebuah matriks阵 dari semua Joints atau Constraint yang terhubung ke Part.

GetMass

Tulis Paralel

DapatkanMass mengembalikan nilai dari property Mass yang hanya dibaca.

Fungsi ini lebih tua dari Mass property. Itu tetap didukung untuk kesesuaian belakangan; Anda harus menggunakan property Mass secara langsung.


Memberikan nilai

Massa bagian.

Contoh Kode

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

Tulis Paralel

Mengembalikan pemain saat ini yang merupakan pemilik jaringan bagian ini, atau nol dalam kasus server.


Memberikan nilai

Pemain saat ini yang adalah pemilik jaringan bagian ini, atau nol dalam kasus server.

GetNetworkOwnershipAuto

Tulis Paralel

Mengembalikan benar jika mesin game secara otomatis memutuskan pemilik jaringan untuk bagian ini.


Memberikan nilai

Apakah mesin game secara otomatis memutuskan pemilik jaringan untuk bagian ini.

GetNoCollisionConstraints

Instances

Memberikan nilai

Instances

GetRootPart

Tulis Paralel

Mengembalikan bagian dasar dari sebuahAssembly. Saat pindahkan sebuahAssembly of parts menggunakan a CFrame . penting untuk pindahkan bagian dasar ini (ini akan pindahkan semua bagian lainnya yang terhubung dengan itu sesuai). Lebih banyak informasi dapat diperoleh dalam artikel Assemblies.

Fungsi ini mengacaukan propinsi AssemblyRootPart . Ini tetap didukung untuk kompatibilitas mundur, tetapi Anda harus menggunakan AssemblyRootPart langsung.


Memberikan nilai

Bagian dasar dari pengumpulan (koleksi) bagian yang terhubung bersama-sama.

GetTouchingParts

Instances

Mengembalikan tabel dari semua bagian yang berinteraksi secara fisik dengan bagian ini. Jika bagian itu sendiri memiliki CanCollide tetap pada false, maka fun


Memberikan nilai

Instances

Tabel semua bagian yang bertindak dan dapat bertabrakan dengan bagian ini.

GetVelocityAtPosition

Tulis Paralel

Mengembalikan kecepatan lini bagian dalam posisi yang diberikan relatif terhadap posisi ini. Ini dapat digunakan untuk mengidentifikasi kecepatan lini bagian dalam penggabungan selain bagian akar. Jika penggabungan tidak memiliki kecepatan sudut, maka kecepatan lini akan selalu sama untuk setiap posisi.

Parameter

position: Vector3

Memberikan nilai

IsGrounded

Tulis Paralel

Mengembalikan benar jika objek terhubung ke bagian yang akan menahan itu (eg sebuah bagian Anchored , misalnya), jika tidak mengembalikan false. Dalam sebuah penggabungan yang memiliki bagian Anchored , setiap bagian lainnya diangkat.


Memberikan nilai

Apakah objek terhubung ke bagian yang akan menahan itu di tempatnya.

Resize

Mengubah ukuran objek hanya seperti menggunakan alat resize Studio.

Parameter

normalId: Enum.NormalId

Sisi untuk diubah.

deltaAmount: number

Berapa banyak untuk tumbuh / mencrut di sisi yang ditentukan.


Memberikan nilai

Apakah bagiannya diubah.

SetNetworkOwner

void

Tetapkan pemain yang diberikan sebagai pemilik jaringan untuk ini dan semua bagian terhubung. Saat playerInstance nol, server akan menjadi pemilik alih-alih pemain.

Parameter

playerInstance: Player

Pemain diberi kepemilikan jaringan bagian.

Nilai Default: "nil"

Memberikan nilai

void

SetNetworkOwnershipAuto

void

Memungkinkan mesin game secara dinamis memutuskan siapa yang akan menangani fisika bagian (salah satu klien atau server).


Memberikan nilai

void

TorqueToAngularAcceleration

Parameter

torque: Vector3
angVelocity: Vector3
Nilai Default: "0, 0, 0"

Memberikan nilai

IntersectAsync

Hasil

Menciptakan IntersectOperation baru dari geometri intersecting dari bagian dan bagian lain dalam array yang diberikan. Hanya Parts yang didukung, bukan Terrain atau 1> Class.

Berikut adalah propperti dari bagian yang dipanggil diberlaku pada IntersectOperation yang dihasilkan:

Dalam gambar perbandingan berikut, IntersectAsync() dipanggil pada blok ungu menggunakan tabel yang berisi blok biru. Hasilnya IntersectOperation resolves menjadi bentuk geometri intersecting dari kedua bagian.

Two block parts overlapping

<figcaption>Bagian yang berdiri sendiri</figcaption>
Parts intersected into a new solid model

Menghasilkan Class.IntersectOperation ”

Catatan

  • Bagian asli tetap utuh setelah operasi persilangan yang berhasil. Dalam kebanyakan kasus, Anda harus Destroy() semua bagian asli dan orangtua IntersectOperation ke tempat yang sama dengan panggilan BasePart .
  • Secara default, warna wajah dari persamaan yang dihasilkan diambil dari propinsi asli. Untuk mengubah seluruh persamaan menjadi warna tertentu, atur propinsi Color ke UsePartColor .
  • Jika operasi persilangan menghasilkan bagian dengan lebih dari 20.000 segi tiga, itu akan dibersihkan menjadi 20.000 segi tiga.

Parameter

parts: Instances

Objek-objek yang berpartisipasi dalam persimpangan.

collisionfidelity: Enum.CollisionFidelity

Nilai Enum.CollisionFidelity yang dihasilkan untuk IntersectOperation .

Nilai Default: "Default"
renderFidelity: Enum.RenderFidelity

Nilai Enum.RenderFidelity yang dihasilkan dari PartOperation .

Nilai Default: "Automatic"

Memberikan nilai

Mengakibatkan IntersectOperation dengan nama default Intersect .

SubtractAsync

Hasil

Menciptakan UnionOperation baru dari bagian, minus geometri yang ditempati oleh bagian dalam array yang diberikan. Hanya Parts yang didukung, bukan Terrain atau 1>

Catat bahwa persamaan yang dihasilkan tidak dapat kosong karena pengurangan. Jika operasi akan menghasilkan geometri yang benar-benar kosong, itu akan gagal.

Dalam gambar perbandingan berikut, SubtractAsync() dipanggil di atas silinder biru menggunakan tabel yang berisi blok ungu. Hasil UnionOperation resolves menjadi bentuk yang menghilangkan geometri blok dari silinder.

Longer block overlapping a cylinder

<figcaption>Bagian yang berdiri sendiri</figcaption>
Block part subtracted from cylinder

Menghasilkan Class.UnionOperation ”

Parameter

parts: Instances

Objek-objek yang mengambil bagian dalam subtraksi.

collisionfidelity: Enum.CollisionFidelity

Nilai Enum.CollisionFidelity yang dihasilkan dari UnionOperation .

Nilai Default: "Default"
renderFidelity: Enum.RenderFidelity

Nilai Enum.RenderFidelity yang dihasilkan dari PartOperation .

Nilai Default: "Automatic"

Memberikan nilai

Mengasuh UnionOperation dengan nama default Union .

Contoh Kode

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

Hasil

Menciptakan UnionOperation baru dari bagian, plus geometri yang ditempati oleh bagian dalam array yang diberikan. Hanya Parts yang didukung, bukan Terrain atau 1>

Berikut adalah propperti dari bagian panggilan yang diterapkan ke UnionOperation :

Dalam gambar perbandingan berikut, UnionAsync() dipanggil pada blok biru menggunakan tabel yang berisi silinder ungu. Hasilnya UnionOperation resolves menjadi bentuk geometri kombinasi dari kedua bagian.

Block and cylinder parts overlapping

<figcaption>Bagian yang berdiri sendiri</figcaption>
Parts joined together into a single solid union

Menghasilkan Class.UnionOperation ”

Catatan

  • Bagian asli tetap utuh setelah operasi uni yang berhasil. Dalam kebanyakan kasus, Anda harus Destroy() semua bagian asli dan menjadikan UnionOperation yang dikembalikan ke tempat yang sama dengan panggilan BasePart .
  • Secara default, persatuan yang dihasilkan menghormati Color property masing-masing dari setiap bagiannya. Untuk mengubah seluruh persatuan menjadi warna tertentu, tetapkan persyaratan UsePartColor ke true .
  • Jika operasi persatuan akan menghasilkan bagian dengan lebih dari 20.000 segi tiga, itu akan dibersihkan menjadi 20.000 segi tiga.

Parameter

parts: Instances

Objek-objek yang terlibat dalam uni dengan bagian panggilan.

collisionfidelity: Enum.CollisionFidelity

Nilai Enum.CollisionFidelity yang dihasilkan dari UnionOperation .

Nilai Default: "Default"
renderFidelity: Enum.RenderFidelity

Nilai Enum.RenderFidelity yang dihasilkan dari PartOperation .

Nilai Default: "Automatic"

Memberikan nilai

Mengasuh UnionOperation dengan nama default Union .

Contoh Kode

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

Acara

TouchEnded

Berdapi saat bagian berhenti menyentuh bagian lain dalam kondisi serupa dengan BasePart.Touched .

Acara ini bekerja bersama dengan Workspace.TouchesUseCollisionGroups untuk menentukan apakah kumpulan tabrakan diakui untuk deteksi.

Parameter

otherPart: BasePart

Contoh Kode

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

Acara Touched terjadi ketika bagian berada dalam kontak dengan bagian lain. kejadian, jika PartA bumper ke PartB , maka 1> Class.BasePart.Touched|PartA.Touched1> akan menyala dengan <

Acara ini hanya diaktifkan sebagai hasil dari gerakan fisik, jadi tidak akan diaktifkan jika properti CFrame diubah sehingga bagian itu menggabungkan bagian lain. Ini juga berarti bahwa setidaknya salah satu dari bagian yang terlibat harus tidak menjadi Class.BasePart.Anchored

Acara ini bekerja bersama dengan Workspace.TouchesUseCollisionGroups untuk menentukan apakah kumpulan tabrakan diakui untuk deteksi.

Parameter

otherPart: BasePart

Bagian lain yang berhubungan dengan bagian yang diberikan.


Contoh Kode

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