BasePart

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Không Thể Duyệt

BasePart là một lớ

Để biết thông tin về cách BaseParts được tập hợp thành các cơ thể cứng simulatively, xem Hợp nhất .

Có nhiều thống kê khác nhau tương tác với BasePart (bao gồm Terrain ) bao gồm:

Tóm Tắt

Thuộc Tính

  • Đọc Song Song

    Xác định có phải một bộ phận là vật rắn bởi vật lý hay không.

  • Không Sao Chép
    Đọc Song Song

    Tốc độ góc của hệ thống tập hợp phần.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Trung tâm của hàng loạt của bộ phận trong không gian thế giới.

  • Không Sao Chép
    Đọc Song Song

    Tốc độ truyền thẳng của hộp số.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Tổng trọng lượng của hàng tập họp.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Một tham chiếu đến phần chính của hệ thống.

  • Xác định loại bề mặt cho mặt sau của một bộ phận (+Z hướng).

  • Xác định loại bề mặt cho mặt dưới của một bộ phận (-Y hướng).

  • Không Sao Chép
    Đọc Song Song

    Xác định màu của một bộ phận.

  • Đọc Song Song

    Xác định vị trí và hướng tây của BasePart trên thế giới.

  • Đọc Song Song

    Xác định có phải vật nào có thể va chạm với nhau.

  • Đọc Song Song

    Xác định có phải xử lý phần nào trong các hành động truy vấn không gian.

  • Đọc Song Song

    Xác định nếu sự kiện TouchedTouchEnded xảy ra trên bộ phận.

  • Đọc Song Song

    Xác định có hay không một bộ phận tạo ra bóng tối.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả vị trí trên thế giới mà trung tâm hồi quang của một bộ phận được đặt.

  • Không Sao Chép
    Đọc Song Song

    Mô tả tên của một nhóm va chạm của một phần.

  • Không Sao Chép
    Đọc Song Song

    Xác định màu của một bộ phận.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Chỉ định các thuộc tính vật lý hiện tại của bộ phận.

  • Xác định một số thuộc tính vật lý của một bộ phận.

  • Đọc Song Song

    Được sử dụng để bật hoặc tắt các lực khí tương đối trên các bộ phận và tập hợp.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Các CFrame của các thành phần vật lý của BasePart .

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Kích thước thực tế của BasePart như được xem xét bởi các khối lận BasePart lận lý.

  • Xác định loại bề mặt cho mặt trước của một bộ phận (-Z hướng).

  • Xác định loại bề mặt cho mặt trái của một bộ phận (-X hướng).

  • Ẩn
    Không Sao Chép
    Đọc Song Song

    Xác định một hệ số nhân cho BasePart.Transparency mà chỉ người dùng địa phương mới có thể thấy.

  • Đọc Song Song

    Xác định có phải một bộ phận được chọn trong Studio không.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả hầu hết lượng lớn của bộ phận, sản lượng của nó và khối lượng.

  • Đọc Song Song

    Xác định xem liệu phần có đóng góp vào tổng sức mạnh hoặc tốc độ chết của cơ thâncứng rắn của nó hay không.

  • Đọc Song Song

    Xác định các thuộc tính và thuộc tính vật lý mặc định của một phần.

  • Không Sao Chép
    Đọc Song Song

    Tên của MaterialVariant .

  • Ẩn
    Không Sao Chép
    Đọc Song Song

    Mô tả sự quay của bộ phận trong thế giới.

  • Đọc Song Song

    Định vị lệch của các cột trụ của bộ phận từ các CFrame của nó.

  • Ẩn
    Không Sao Chép
    Đọc Song Song

    Mô tả vị trí của bộ phận trên thế giới.

  • Ẩn
    Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Thời gian kể từ lần cuối cập nhật vật lý.

  • Đọc Song Song

    Xác định mức độ phản chiếu của một bộ phận trên trời.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả thay đổi nhỏ nhất cho phép bởi phương pháp Thay đổi kích thước.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả các khuôn mặt mà một phần có thể được thay đổi kích thước.

  • Xác định loại bề mặt cho mặt phải của một bộ phận (+X hướng).

  • Đọc Song Song

    Quy tắc chính để xác định phần thân của một bản dựng.

  • Không Sao Chép
    Đọc Song Song

    Sự quay của bộ phận theo độ cho ba trục.

  • Không Sao Chép
    Đọc Song Song

    Xác định các kích thước của một bộ phận (Độ dài, chiều rộng, chiều cao).

  • Xác định loại bề mặt cho mặt trên của một bộ phận (+Y hướng).

  • Đọc Song Song

    Xác định mức độ mà một phần có thể được nhìn thấy thông qua (ản định hướng ngược lại của sự mờ dần).

Thuộc Tính kế thừa từ PVInstance
  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song
  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song

Phương Pháp

Phương Pháp kế thừa từ PVInstance

Sự Kiện

Thuộc Tính

Anchored

Đọc Song Song

Thuộc tính Anchored xác định có phải khu vực sẽ được bất biến bởi vật lý khi bạn kích hoạt nó. Khi bật, một khu vực sẽ không bao giờ thay đổi vị trí do trọng lực, va chạm với các bộ phận khác, vùi nhau hoặ

Một phần không kèm theo có thể vẫn được di chuyển bằng cách thay đổi CFrame hoặc Position của nó, và nó vẫn có thể có một tốc độ Class.BasePart.

Cuối cùng, nếu một phần không kết dính với một phần kết dính qua một đối tượng như một Weld, nó cũng sẽ hoạt động kết dính. Nếu một mối liên kết này bị phá vỡ, phần có thể bị ảnh hưởng bởi lực hấp hối một lần nữa.

Chủ sở hữu mạng không thể được cài đặt trên các bộ phận được kết vào. Nếu trạng thái kết vào của một bộ phận thay đổi trên máy chủ, trạng thái kết vào của một bộ phận sẽ bị ảnh hưởng.

Mẫu mã

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

Không Sao Chép
Đọc Song Song

Vectơ tốc độ góc của khu vực này. Đây là tỷ lệ thay đổi hướng trong radians mỗi giây.

Tốc độ góc là như nhau ở mọi điểm của máy tập hợp.

Cài đặt tốc độ trực tiếp có thể dẫn đến chuyển động không thực tế. Sử dụng Torque hoặc AngularVelocity hạn chế là tốt nhất, hoặc sử dụng BasePart:ApplyAngularImpulse() nếu bạn muốn thay đổi tức thời về tốc độ.

Nếu bộ phận là sở hữu bởi máy chủ, thuộc tính này phải được th

AssemblyCenterOfMass

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Một vị trí được tính toán thông qua massposition của tất cả các bộ phận trong hệ thống.

Nếu cấu hình có một phần khởi định, trung tâm hàm lượng của phần đó sẽ là trung tâm hàm lượng của cấu hình, và cấu hình sẽ có kích thước khối lượng vô hạn.

Biết trung tâm của hàng loạt có thể giúp máy tập trung ổn định. Một lực được áp dụng vào trung tâm của hàng loạt sẽ không gây tốc độ góc, chỉ là dòng thẳng. Một máy tập trung có trung tâm thấp sẽ có thời gian đứng tốt hơn trong hiệu ứng của trọng lực.

AssemblyLinearVelocity

Không Sao Chép
Đọc Song Song

Vectơ tốc độ trung tâm của khu vực này. Đây là tỷ lệ thay đổi vị trí của khu vực's center of mass trong studs mỗi giây.

Nếu bạn muốn biết tốc độ ở một điểm khác ngoài trung tâm của hàng tập trung, hãy sử dụng BasePart:GetVelocityAtPosition() .

Cài đặt tốc độ trực tiếp có thể dẫn đến chuyển động không thực tế. Sử dụng một VectorForce hạn chế là được ưa thích, hoặc sử dụng BasePart:ApplyImpulse() nếu bạn muốn thay đổi tức thời về tốc độ.

Nếu bộ phận là sở hữu bởi máy chủ, thuộc tính này phải được th

AssemblyMass

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Tổng số của tất cả parts trong khu vực tập trung của thành phần này. Các bộ phận là Massless và không phải là bộ phận chính của thành phần tập trung.

Nếu cấu hình có một phần định hướng, thì cấu hình đó được xem như là vô hạn. Các rào chắn và các tương tác vật lý khác giữa các cấu hình không kết nối với nhau có thể gây ra những lỗi không đáng kể.

AssemblyRootPart

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính này cho thấy rằng BasePart đã được chọn tự động để đại diện cho phần GetRootPart() của hệ thống. Nó là cùng một phần mà người phát triển gọi là Class.BasePart:GetRootPart()|GetRootPart().

Phần rễ có thể được thay đổi bằng cách thay đổi RootPriority của các bộ phận trong hệ thống.

Các bộ phận chia sẻ cùng một phần Của Cơ Sở là trong cùng một kết cấu.

Để biết thêm thông tin về các bộ phận của rễ, xem Hợp nhất .

BackSurface

Đọc Song Song

Thuộc tính Bề mặt sau xác định loại bề mặt được sử dụng cho hướng +Z của một bộ phận. Khi hai mặt của hai bộ phận được đặt cạnh nhau, chúng có thể tạo ra một khớp nối giữa họ. Nếu được đặt vào Motor, thuộc tính Bề mặt sau xác định cách mộ

Hầu hết các bề mặt đều tạo ra một lớp trên bề mặt nếu BasePart.Material được đặt thành Plastic. Một số bề mặt đều tạo ra một đồ trang trí 3D thay vào đó. Nếu thuộc tính này được chọn trong

Mẫu mã

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

Đọc Song Song

Thuộc tính BottomSurface xác định loại bề mặt được sử dụng cho hướng -Y của một phần. Khi hai mặt của hai phần được đặt cạnh nhau, chúng có thể tạo ra một khớp nối giữa họ. Nếu được đặt vào Motor, thuộc tính BasePart.BottomSurfaceInput xác định cách

Hầu hết các bề mặt đều tạo ra một lớp trên bề mặt nếu BasePart.Material được đặt thành Plastic. Một số bề mặt đều tạo ra một đồ trang trí 3D thay vào đó. Nếu thuộc tính này được chọn trong

Mẫu mã

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

Không Sao Chép
Đọc Song Song

Thuộc tính BrickColor xác định màu của một phần. Nếu phần có một BasePart.Material , thì điều này cũng xác định màu được sử dụng khi tạo mẫu thân. Đối với nhiều kiểm soát hơn về màu, thuộ

Các thuộc tính thị giác khác của một bộ phận được xác định bởi BasePart.TransparencyBasePart.Reflectance .

Mẫu mã

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

Đọc Song Song

Thuộc tính CFrame xác định vị trí và hướng của BasePart trên thế giới. Nó hoạt động như một vị trí tham chiếu ngẫu nhiên trên geometria, nhưng ExtentsCFrame đại diện cho thực t

Khi cài đặt CFrame trên một phần, các phần khác cũng được di chuyển so với phần, nhưng được khuyến nghị bạn sử dụng PVInstance:PivotTo() để di chuyển toàn bộ mô hình, chẳng hạn như khi dịch chuyển nhân vật của người chơi.

Ngoài việc thiết lập BasePart.Position, thiết lập BasePart.CFrame sẽ luôn luôn di chuyển bộ phận đến chính xác CFrame ; với lời khác: 1> không có sự

Để theo dõi vị trí so với một phần's CFrame , một Attachment có thể hữu ích.

Mẫu mã

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

Đọc Song Song

CanCollide xác định có phải một bộ phận sẽ tương tác vật lý với các bộ phận khác không. Khi bị vô hiệu hóa, các bộ phận khác có thể đi qua bức tường bị phá vỡ mà không bị xem xét bởi động cơ vật lý.

Nếu một phần không được BasePart.Anchored và có CanCollide disabled, nó có thể rơi ra khỏi thế giới để cuối cùng bị phá hủy bởi Workspace.FallenPartsDestroyHeight .

Khi CanCollide bị vô hiệu hóa, các bộ phận vẫn có thể bắn sự kiện BasePart.Touched (ngoài ra các bộ phận khác cũng có thể chạm chúng). Bạn có thể tắt nó bằng cách BasePart.CanTouch .

Để biết thêm thông tin về va chạm, xem Va chạm .

Mẫu mã

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

Đọc Song Song

CanQuery xác định có phải xử lý phần nào trong trình tìm kiếm không gian, chẳng hạn như GetPartBoundsInBox hoặc Raycast . CanCollide cũng

Ngoài giới hạn này, cũng có thể loại bỏ các bộ phận mà là con cái của một danh sách bộ phận được cung cấp bằng một OverlapParams hoặc RaycastParams đối tượng khi gọi các hàm gọi truy vấn không gian.

CanTouch

Đọc Song Song

Điều này xác định whether Class.BasePart

Lưu ý rằng đồng hồ điều khiển này có thể được cài đặt để tôn trọng nhóm va chạm thông qua đặt tính Workspace.TouchesUseCollisionGroups. Nếu đúng, các bộ phận trong nhóm không va chạm sẽ bỏ qua cả hai sự kiện va chạ

Thông Số

Có một lợi ích nhỏ về hiệu suất trên các bộ phận có cả CanTouchCanCollide đặt để false , v

CastShadow

Đọc Song Song

Xác định có hay không một bộ phận tạo ra bóng tối.

Lưu ý rằng tính năng này không được thiết kế để tăng hiệu suất . Nó chỉ nên bị vô hiệu hóa ở những bộ phận mà bạn muốn ẩn bóng tối mà bộ phận đó cast. Việc tắt tính năng này cho một bộ phận nào đó có thể gây ra những hiệu ứng thị giác trên những bộ phậ

CenterOfMass

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính CenterOfMass mô tả vị trí local của trung tâm mạng của một phần. Nếu đây là một bộ phận tập hợp, đây là AssemblyCenterOfMass được chuyển từ khô

CollisionGroup

Không Sao Chép
Đọc Song Song

Tên của Class.BasePart.CollisionGroup|CollisionGroup tính năng mô tả tên của nhóm va chạm của bộ phận (tối đa 100 ký tự). Các bộ phận bắt đầu trong nhóm mặc định có tên là CollisionGroup . Giá trị này không thể trống.

Mặc dù chính thuộc tính này không bị sao chép, nhưng động cơ tự động sao chép giá trị qua một thuộc tính riêng khác để giải quyết vấn đề hỗn hợp sau đó.

Mẫu mã

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

Không Sao Chép
Đọc Song Song

Thuộc tính Màu xác định màu của một phần. Nếu phần có một BasePart.Material, điều này cũng xác định màu được sử dụng khi render hình ảnh thực tế. Nếu thuộc tính này được cài đặt, BasePart.BrickColor sẽ sử dụng màu

Các thuộc tính thị giác khác của một bộ phận được xác định bởi BasePart.TransparencyBasePart.Reflectance .

Mẫu mã

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Các thuộc tính vật lý hiện tại của bộ phận. Bạn có thể cài đặt các giá trị tùy chỉnh cho các thuộc tính vật lý của mỗi bộ phận, vật liệu tùy chỉnh và vật liệu không hợp nhất. Engine ưu tiên các định nghĩa cao nhất khi xác định cá

  • Tùy chỉnh các thuộc tính vật lý của bộ phận
  • Tùy chỉnh các thuộc tính vật lý của vật liệu tùy chỉnh của bộ phận
  • Các thuộc tính vật lý tùy chỉnh của vật liệu bên trong vật liệu
  • Các thuộc tính vật lý mặc định của vật liệu của bộ phận

CustomPhysicalProperties

Đọc Song Song

CustomPhysicalProperties cho phép bạn tùy chỉnh các khía cạnh vật lý của một Part, chẳng hạn như độ dày, ma sát và độ giãn dãn.

Nếu được bật, thuộc tính này cho phép bạn cấu hình các thuộc tính vật lý này. Nếu bị vô hiệu hóa, các thuộc tính vật lý này được xác định bởi BasePart.Material của bộ phận. Trang cho Enum.Material bao gồm danh sách các vật liệu bộ phận

Mẫu mã

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

Đọc Song Song

Khi đúng, và khi Workspace.FluidForces được bật, khiến cho động cơ vật lý tính toán các lực khí cưỡng trên điều này BasePart .

ExtentsCFrame

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Datatype.CFrame của các thể lý hữu tại BasePart , đại diện cho trung tâm của nó.

ExtentsSize

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Kích thước thực tế của Class.BasePart như được xem bởi các khối lận BasePart trong khi chạy trên các ứng dụng Phản ứng va chạm .

FrontSurface

Đọc Song Song

Thuộc tính Bề mặt Trước xác định loại bề mặt được sử dụng cho hướng -Z của một bộ phận. Khi hai mặt của hai bộ phận được đặt cạnh nhau, chúng có thể tạo ra một khớp nối giữa họ. Nếu được đặt vào Motor, thuộc tính BasePart.FrontSurfaceInput

Hầu hết các loại bề mặt đều tạo một lớp trên bề mặt nếu BasePart.Material được đặt thành Plastic. Một số loại bề mặt bao gồm Hinge, Motor và SteppingMotor tạo một đồ trang trí 3D thay vì đó. Nếu đặt thu

Mẫu mã

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

Đọc Song Song

Thuộc tính Bề mặt Trái định loại bề mặt được sử dụng cho hướng -X của một bộ phận. Khi hai mặt bên cạnh nhau, chúng có thể tạo ra một khớp nối giữa họ. Nếu được cài đặt cho Motor, thuộc tính BasePart.LeftSurfaceInput định hướng cách một khớp nố

Hầu hết các loại bề mặt đều tạo một lớp trên bề mặt nếu BasePart.Material được đặt thành Plastic. Một số loại bề mặt bao gồm Hinge, Motor và SteppingMotor tạo một đồ trang trí 3D thay vì đó. Nếu đặt thu

Mẫu mã

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

Ẩn
Không Sao Chép
Đọc Song Song

Thuộc tính LocalTransparencyModifier là một hệ số nhân cho BasePart.Transparency mà chỉ được hiển thị cho khách hàng local. Nó không bị sao chép từ khách hàng tới máy chủ và hữu ích cho khi một phần nên không render cho mộ

Điều này điều chỉnh độ trong suốt của bộ phận địa phương thông qua công thức sau đây, kết quả được nhân với giá trị từ 0 đến 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>
Độ trong suốtNgười điều chỉnh trong suốt địa phươngBên trong máy chủBên trong suốt của khách hàng

Locked

Đọc Song Song

Thuộc tính Đã Khóa xác định liệu một part (hoặc một model ) có được chọn trong Roblox Studio bằng cách nhấp vào nó. Thuộc tính này thường được bật trên các bộ ph

Mẫu mã

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Mass là một tính chất đọc chỉ mô tả sản lượng và độ dày của một phần. Nó được trả lại bởi hàm GetMass .

  • Âm lượng của một phần được xác định bởi kích thước Size và hình dạng Shape của nó, có thể thay đổi tùy thuộc vào loại BasePart được sử dụng, chẳng hạn như WedgePart .
  • Độ dày của một bộ phận được xác định bởi Material hoặc CustomPhysicalProperties , nếu được xác định.

Massless

Đọc Song Song

Nếu tính năng này được bật, BasePart sẽ không đóng góp vào tổng số hoặc tốc độ trị giác của hầu hết các bộ phận của nó miễn là nó được kết hợp với một bộ phận khác có tốc độ trị giác.

Nếu bộ phận là bộ rễ của riêng nó theo AssemblyRootPart , thì sẽ bị lãng quên cho bộ phận đó, và nó vẫn sẽ đóng góp một lượng lớn mass và inertia cho bộ phận của nó như một phần bình thường. Các bộ phận mà không có mass sẽ k

Điều này có thể hữu ích cho những thứ như phụ kiện tùy chọn trên các xe mà bạn không muốn ảnh hưởng đến việc xử lý xe hoặc một mạng lưới xử lý mạng đơn giản.

Xem thêm Hợp nhất, một bài viết tài liệu hướng dẫn các bộ phận rễ và cách sử dụng chúng.

Đọc Song Song

Thuộc tính Vật liệu cho phép một người xây dựng thiết lập chất bề mặt và mặt trị của một bộ phận (trong trường hợp nào đó Class.BasePart.CustomPhysicalProperties không còn). Thuộc tính nhựa mặt trị có một chất bề mặt rấ

Cài đặt thuộc tính này sau đó bằng cách kích hoạt BasePart.CustomPhysicalProperties sẽ sử dụng các thuộc tính vật lý mặc định của một vật. ví dụ / trường hợp, DiamondPlate là một vật liệu rất dày đặc trong khi Wood là rất nhẹ. A dạng độ của một chi tiết định hướng nó sẽ bị lơ

Vật liệu Kính thay đổi hành vi xử lý trên các cài đặt đồ họa độ trung bình. Nó áp dụng một chút phản xạ (tương tự như BasePart.Reflectance ) và bị xoắn trục. Hiệu ứng này được đặc biệt nhấn mạnh trên các

Mẫu mã

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

Không Sao Chép
Đọc Song Song

Hệ thống tìm kiếm Class.MaterialVariant instância với tên MaterialVariant được định nghĩa và MaterialVariant đánh máy. Nếu nó tìm thấy thành công một instância Class.MaterialVariant tương ứng với tên MaterialVariant được định nghĩa, nó sử dụng instância Class.MaterialVariant để

Orientation

Ẩn
Không Sao Chép
Đọc Song Song

Thuộc tính Orientation mô tả vị trí quay của bộ phận trong độ dương, dương và Z bằng một Vector

Khi cài đặt thuộc tính này bất kỳ Welds hoặc Motor6Ds kết nối với phần này sẽ có thể tương ứng đúng với Class.JointInstance.

WeldSeconds cũng sẽ bị tạm thời tắt và bị mở lại trong quá trình di chuyển.

Mẫu mã

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

Đọc Song Song

Thuộc tính này định mức thu hồi của các cạnh của bộ phận từ CFrame của nó, đó là part:GetPivot() tương tự như part.CFrame * part.PivotOffset .

Điều này tiện lợi để cài đặt trục vào một vị trí trong trang bị local của bạn, nhưng cài đặt pivô của một phần vào một vị trí trong trang bị thế giới có thể được thực hiện như sau:


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

Mẫu mã

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

Ẩn
Không Sao Chép
Đọc Song Song

Thuộc tính vị trí mô tả vị trí của một Class.BasePart| Class.BasePart bằng cách sử dụng một Datatype.Vector3 . Nó phản ánh vị trí của Class.BasePart.CFrame của part, tuy nhiên nó cũng có thể được cài đặt.

Khi cài đặt thuộc tính này bất kỳ Welds hoặc Motor6Ds kết nối với phần này sẽ có thể tương ứng đúng với Class.JointInstance.

WeldSeconds cũng sẽ bị tạm thời tắt và bị mở lại trong quá trình di chuyển.

ReceiveAge

Ẩn
Chỉ Đọc
Không Sao Chép
Đọc Song Song

Điều này trả về thời gian bằng giây từ khi vật lý của bộ phận được cập nhật lần cuối trên máy chủ (hoặc trên máy chủ). Trả 0 khi bộ phận không có vật lý (bị kẹt)

Reflectance

Đọc Song Song

Chỉ số Phản xạ xác định mức độ phản xạ của một part . Một giá trị 0 cho thấy rằng part không phản xạ gì tất cả, và một giá trị 1 cho thấy part nên hoàn toàn phản xạ.

Độ phản xạ không bị ảnh hưởng bởi BasePart.Transparency, trừ khi bộ phận không hoàn toàn trong suốt, trong đó case phản xảy không xảy ra. Độ phản xảy có thể bị bỏ qua tùy thuộc vào BasePart.Material của bộ phận.

Mẫu mã

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính ResizeIncrement là một thuộc tính đọc chỉ để mô tả thay đổi nhỏ nhất trong kích thước cho phép bởi phương thức BasePart:Resize() . Nó khác biệt giữa các

Mẫu mã

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Tính năng ResizeableFaces (với một e , chứ không phải là ResizableFaces) mô tả sử dụng một

Mẫu mã

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

Đọc Song Song

Thuộc tính Bề mặt phải xác định loại bề mặt được sử dụng cho hướng +X của một phần. Khi hai mặt phần được đặt cạnh nhau, chúng có thể tạo ra một mối quan hệ giữa họ. Nếu được cài đặt cho Motor, thuộc tính Class.BasePart.RightSurfaceInput xác định cách một mố

Hầu hết các loại bề mặt đều tạo một lớp trên bề mặt nếu BasePart.Material được đặt thành SurfaceSelection Một số loại bề mặt bao gồm Hinge, Motor và SteppingMotor sẽ tạo một đồ trang trí 3D thay vì

Mẫu mã

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

Đọc Song Song

Đây là một biểu tượng là một số tối thiểu -127 và 127 giữa tất cả các quy tắc khác cho loại part sắp xếpnày. Khi xem xét những part không phải là Anchored và chia s

Bạn có thể sử dụng thuộc tính này để điều khiển phần nào của một bộ lập trình là phần rễ và giữ phần rễ ổn định nếu kích thước thay đổi.

Xem thêm Hợp nhất, một bài viết tài liệu hướng dẫn các bộ phận rễ và cách sử dụng chúng.

Rotation

Không Sao Chép
Đọc Song Song

Sự quay của bộ phận theo độ cho ba trục.

Khi cài đặt thuộc tính này bất kỳ Welds hoặc Motor6Ds kết nối với phần này sẽ có thể tương ứng đúng với Class.JointInstance.

WeldSeconds cũng sẽ bị tạm thời tắt và bị mở lại trong quá trình di chuyển.

Không Sao Chép
Đọc Song Song

Cột Size của một phần xác định các kích thước visual của nó, trong khi Class.BasePart.ExtentsSize|Ext

Kích thước của bộ phận xác định số lượng của nó mà được cung cấp bởi BasePart:GetMass() . Một bộ phận của Size được sử dụng bởi một loạt các thống kê khác nhau của các thống kê khác nhau:

  • ParticleEmitter để xác định khu vực mà các hạt được tạo ra từ.
  • BlockMesh để xác định một phần prism vuông đã được hiển thị.
  • SpecialMesh cho một số MeshTypes nhất định, để xác định kích thước của lưới định dạng.
  • SurfaceLight để xác định không gian để chiếu sáng.

Mẫu mã

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
Đọc Song Song

Thuộc tính Bề mặt trên xác định loại bề mặt được sử dụng cho hướng +Y của một phần. Khi hai mặt phần được đặt cạnh nhau, họ có thể tạo ra một khớp nối giữa họ. Nếu được đặt vào Motor, thuộc tính Bề mặt trên xác định cách một khớp nối motor

Hầu hết các bề mặt đều tạo ra một lớp trên bề mặt nếu BasePart.Material được đặt thành Plastic. Một số bề mặt đều tạo ra một đồ trang trí 3D thay vào đó. Nếu thuộc tính này được chọn trong

Mẫu mã

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

Đọc Song Song

Thuộc tính Transparency kiểm soát sự hiển thị của một phần trên một bảng đo 0-1, nơi 0 hoàn toàn có thể nhìn thấy (opaque), và giá trị 1 hoàn toàn có thể nhìn tất cả(không được hiển thị).

BasePart.Reflectance có thể giảm tổng trong suốt của một gạch nếu đặt nó gần một giá trị gần 1.

Trong khi các bộ phận hoàn toàn trong suốt không được hiển thị, một số bộ phận chuyển đổi một phần có một số chi phí chuyển đổi nhất định. Việc có nhiều bộ phận trong suốt có thể làm chậm hiệu lựcsuất trò chơi.

Khi các bộ phận trong suốt vượt nhau, hãy cố gắng giữ các bộ phận trong suốt khỏi nhau để tránh điều này.

The BasePart.LocalTransparencyModifier is a multiplier to Transparency that is only visible to the local client.

Mẫu mã

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)

Phương Pháp

AngularAccelerationToTorque

Tham Số

angAcceleration: Vector3
angVelocity: Vector3
Giá Trị Mặc Định: "0, 0, 0"

Lợi Nhuận

ApplyAngularImpulse

void

Áp dụng một ngọn lửa ngay lập tức cho cả bộ phận này, khiến cả bộ phận quay.

Tốc độ góc kết quả từ impulse dựa trên mass của hồ sơ. Vì vậy, một impulse càng cao hơn là cần thiết để di chuyển các tập hợp lớn hơn. Impulses hữu ích cho các trường hợp mà bạn muốn áp dụng một lực ngay lập tức, chẳng hạn như m

Nếu bộ phận là sở hữu bởi máy chủ, chức năng này phải được gọ

Tham Số

impulse: Vector3

Mộtベクトル lực để được áp dụng cho hệ thống như một tia cường độ.


Lợi Nhuận

void

ApplyImpulse

void

Hàm này áp dụng một lực lượng tức thì cho phần cấu hình này.

Lực được áp dụng tại trung tâm hội tụ của hội tụ hội tụ , vì vậy chuyển động kết quả sẽ chỉ là line.

Tốc độ kết quả từ impulse dựa trên mass của hành lang. Vì vậy, một impulse càng cao là cần thiết để di chuyển các hàng tải lớn hơn. Các impulse hữu ích cho các trường hợp bạn muốn áp dụng một lực ngay lập tức, chẳng hạn như một vụ nổ

Nếu bộ phận là sở hữu bởi máy chủ, chức năng này phải được gọ

Tham Số

impulse: Vector3

Mộtベクトル lực để được áp dụng cho hệ thống như một tia cường độ.


Lợi Nhuận

void

ApplyImpulseAtPosition

void

Hàm này áp dụng một lực lập tức cho phần tử này, tại vị trí định cưỡng trong không gian thế giới.

Nếu vị trí không ở trung tâm của hàng tập hợp, center of mass, thì hành động dịch chuyển sẽ gây ra một chuyển động vị trí và quay.

Tốc độ kết quả từ impulse dựa vào mass của hành lang. Vì vậy, một impulse càng cao là cần thiết để di chuyển các tập hợp lớn hơn. Các impulse hữu ích cho các trường hợp mà các nhà phát triển muốn áp dụng một lực ngay lập tức, chẳng h

Nếu bộ phận là sở hữu bởi máy chủ, chức năng này phải được gọ

Tham Số

impulse: Vector3

Mộtベクトル lực để được áp dụng cho hệ thống như một tia cường độ.

position: Vector3

Vị trí, trong không gian thế giới, để áp dụng tác động.


Lợi Nhuận

void

CanCollideWith

Ghi Song Song

Quyết định xem các bộ phận có thể va chạm với nhau hay không. Chức năng này xem xét các nhóm va chạm của hai bộ phận. Chức năng này sẽ lỗi nếu bộ phận được xác định là một BasePart.

Tham Số

part: BasePart

Phần được kiểm tra cho độ va chạm.


Lợi Nhuận

Liệu các bộ phận có thể va chạm với nhau.

CanSetNetworkOwnership

Hàm CanSetNetworkOwnership kiểm tra xem bạn có thể thiết lập sở hữu mạng của một phần không.

Giá trị trả lại của chức năng kiểm tra whether or not you can call BasePart:SetNetworkOwner() or BasePart:SetNetworkOwnershipAuto() without遇到 an error. It returns true if you can modify/read the network ownership, or returns false and the reason you can't, as a chuỗi.


Lợi Nhuận

Whether you can modify or read the network ownership and the reason.

Mẫu mã

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

Tham Số

position: Vector3

Lợi Nhuận

GetConnectedParts

Instances
Ghi Song Song

Trả lại một bảng các bộ phận kết nối với mục bằng bất kỳ loại nào của mối hàn cứng.

Nếu recursive thì chức năng này sẽ trả lại tất cả các bộ phận trong hệ thống kết cấu cứng rắn kết nối với BasePart.

Các Kết Cấu Cứng

Khi một kết nối kết nối hai bộ phận với nhau (Part0 → Part1) , một kết nối là cứng nếu lý thuyết về Part1 được hoàn toàn bị khóa bởi 1> Part01> . Điều này chỉ áp dụng cho các loại kết nối sau đây

Tham Số

recursive: bool

Một bảng các bộ phận kết nối với mục tiêu bằng bất kỳ loại joint .

Giá Trị Mặc Định: false

Lợi Nhuận

Instances

GetJoints

Instances
Ghi Song Song

Trả lại tất cả Cột kết nối hoặc Giới hạn mà đã kết nối với phần này.


Lợi Nhuận

Instances

Một dàn đều các Joints hoặc Constraints kết nối với Part.

GetMass

Ghi Song Song

GetMass trả lại giá trị của thuộc tính đọc chỉ Mass .

Hàm này trước ngày thuộc tính Mass. Nó vẫn được hỗ trợ cho sự hỗ trợ qua nhiều phiên bản; bạn nên sử dụng thuộc tính Mass trực tiếp.


Lợi Nhuận

Mass của bộ phận.

Mẫu mã

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

Ghi Song Song

Trả về người chơi hiện tại mà là chủ mạng của phần này, hoặc là nil trong trường hợp của máy chủ.


Lợi Nhuận

Người chơi hiện tại mà là chủ mạng của phần này, hoặc là nil trong trường hợp của máy chủ.

GetNetworkOwnershipAuto

Ghi Song Song

Trả về true nếu Engine game tự động quyết định chủ mạng cho phần này.


Lợi Nhuận

Có phải động cơ trò chơi tự động quyết định chủ mạng cho phần này không?

GetNoCollisionConstraints

Instances

Lợi Nhuận

Instances

GetRootPart

Ghi Song Song

Trả lại phần cơ bản của một bộ sưu tập. Khi di chuyển một bộ sưu tập của các bộ phận bằng cách sử dụng một CFrame . thì rất quan trọng để di chuyển phần cơ bản này (tất cả các bộ phận khác được kết nối với nó theo cùng một cách). Th

Hàm này trước Class.BasePart.AssemblyRootPart|AssemblyRootPart property. Nó vẫn được hỗ trợ cho sự thích nghi lùi lại, nhưng bạn nên sử dụng AssemblyRootPart trực tiếp.


Lợi Nhuận

Phần cơ bản của một bộ sưu tập (một loạt các bộ phận kết nối với nhau).

GetTouchingParts

Instances

Trả về một bảng của tất cả các bộ phận đang tương tác với bộ phận này. Nếu bộ


Lợi Nhuận

Instances

Một bảng tất cả các bộ phận có thể chạm chồng và có thể va chạm với bộ phận này.

GetVelocityAtPosition

Ghi Song Song

Trả lại tốc độ lineer của hộp gói của bộ phận ở vị trí được cho là tương đối với bộ phận này. Nó có thể được sử dụng để xác định tốc độ lineer của các bộ phận trong một hộp gói khác ngoài bộ phận chính. Nếu hộp gói không có tốc độ linear, thì tốc độ line

Tham Số

position: Vector3

Lợi Nhuận

IsGrounded

Ghi Song Song

Trả về true nếu đối tượng kết nối với một phần nào đó sẽ giữ nó ở chỗ (nguyên tắc là một các Anchored phần), nếu không trả về false. Trong một bản tập hợp có một phần Anchored thì mọi ph


Lợi Nhuận

Có phải kết nối đối tượng với một bộ phận để giữ nó ở địa điểmđó.

Resize

Thay đổi kích thước của một đối tượng chỉ như sử dụng công cụ thay đổi kích thước Studio.

Tham Số

normalId: Enum.NormalId

Bên để thay đổi kích thước.

deltaAmount: number

Bao nhiêu để tăng trưởng/thu nhỏ bên trên.


Lợi Nhuận

Dù bạn có phải thay đổi kích thước của bộ phận.

SetNetworkOwner

void

Đặt người chơi này là chủ mạng cho các bộ phận liên kết này và tất cả. Khi playerInstance là nil, máy chủ sẽ là chủ thay vì một người chơi.

Tham Số

playerInstance: Player

Người chơi được cấp quyền sở hữu mạng của bộ phận.

Giá Trị Mặc Định: "nil"

Lợi Nhuận

void

SetNetworkOwnershipAuto

void

Cho phép động cơ trò chơi quyết định dinamically ai sẽ xử lý vật lý của bộ phận (một trong những khách hàng hoặc máy chủ).


Lợi Nhuận

void

TorqueToAngularAcceleration

Tham Số

torque: Vector3
angVelocity: Vector3
Giá Trị Mặc Định: "0, 0, 0"

Lợi Nhuận

IntersectAsync

Sinh Lợi

Tạo một IntersectOperation mới từ geometrie phân cách của bộ phận và các bộ phận khác trong mảng đã được cho. Chỉ Parts được h

Các thuộc tính sau đây từ phần gọi được áp dụng cho kết quả IntersectOperation :

Trong hình ảnh so sánh sau đây, IntersectAsync() được gọi trên cục khối màu tím bằng một bảng chứa cục khối xanh. Kết quả cuối cùng của IntersectOperation là hình dạng của khối khớp nối của cả hai bên.

Two block parts overlapping

<figcaption>Phân cách các bộ phận</figcaption>
Parts intersected into a new solid model

<figcaption>Kết quả <code>Class.IntersectOperation</code></figcaption>

Ghi chú

  • Các bộ phận gốc vẫn giữ nguyên sau khi thành công trong quá trình giao tiếp. Trong hầu hết các trường hợp, bạn nên Destroy() tất cả các bộ phận gốc và phụ huynh của bộ phận được gọi là IntersectOperation đến cùng một n
  • Mặc định, màu mặt của kết quả cuộc giao tranh được lấy từ Color tính năng của các bộ phận nguyên mẫu. Để thay đổi toàn bộ cuộc giao tranh thành một màu cụ thể, hãy đặt tính Class.PartOperation.UsePartColor|Use
  • Nếu một hành động vùi vẫy kết quả trong một phần có hơn 20.000 hình tam giác, nó sẽ được đơn giản hóa thành 20.000 hình tam giác.

Tham Số

parts: Instances

Các thể hiện được thực hiện trong phần dựng giao thông.

collisionfidelity: Enum.CollisionFidelity

Giá trị Enum.CollisionFidelity được tạo ra.

Giá Trị Mặc Định: "Default"
renderFidelity: Enum.RenderFidelity

Giá trị Enum.RenderFidelity được tạo ra.

Giá Trị Mặc Định: "Automatic"

Lợi Nhuận

Kết quả IntersectOperation với tên mặc định Intersect .

SubtractAsync

Sinh Lợi

Tạo một UnionOperation mới từ bên, giảm địa hình bị chiếm bởi các bên trong cấu hình đã được cho. Chỉ Parts được hỗ trợ

Lưu ý rằng liên hợp kết quả không thể là trống do các khoản trừng trừ. Nếu hoạt động này sẽ kết quả một geometri hoàn toàn trống rỗng, nó sẽ thất bại.

Trong hình ảnh so sánh sau đây, SubtractAsync() được gọi trên xi-lanh màu xanh bằng một bảng chứa các khối màu tím. Kết quả UnionOperation sau đó được giải quyết thành hình dạng mà omit điểm geometri của khối khỏ

Longer block overlapping a cylinder

<figcaption>Phân cách các bộ phận</figcaption>
Block part subtracted from cylinder

<figcaption>Kết quả <code>Class.UnionOperation</code></figcaption>

Tham Số

parts: Instances

Các thể hiện được sử dụng trong phần dư trừ.

collisionfidelity: Enum.CollisionFidelity

Giá trị Enum.CollisionFidelity được tạo ra cho kết quả UnionOperation .

Giá Trị Mặc Định: "Default"
renderFidelity: Enum.RenderFidelity

Giá trị Enum.RenderFidelity được tạo ra.

Giá Trị Mặc Định: "Automatic"

Lợi Nhuận

Kết quả UnionOperation với tên mặc định Union .

Mẫu mã

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

Sinh Lợi

Tạo một UnionOperation mới từ bên, thêm vào đó là hình họa được chiếm bởi các bộ phận trong bảng đã được cung cấp. Chỉ Class.Part|Parts

Các thuộc tính sau đây từ phần gọi được áp dụng cho kết quả UnionOperation :

Trong hình ảnh so sánh sau đây, UnionAsync() được gọi trên cục khối màu xanh bằng một bảng chứa hình trụ màu tím. Kết quả UnionOperation được giải quyết thành hình dạng của kết hợp hình họa của cả hai bên.

Block and cylinder parts overlapping

<figcaption>Phân cách các bộ phận</figcaption>
Parts joined together into a single solid union

<figcaption>Kết quả <code>Class.UnionOperation</code></figcaption>

Ghi chú

  • Các bộ phận gốc vẫn giữ nguyên sau khi một cuộc hợp nhất thành công. Trong hầu hết các trường hợp, bạn nên Destroy() tất cả các bộ phận gốc và phụ huynh của bộ phận được gọi là UnionOperation đến cùng một nơi
  • Bởi mặc định, liên hệ kết kết quả tuân theo Color thuộc tính của mỗi trong các bộ phận của nó. Để thay đổi toàn bộ liên hệ kết thành một màu cụ thể, hãy đặt giá trị UsePartColor của nó thành
  • Nếu một hành động liên hợp kết quả với hơn 20.000 tam giác, nó sẽ được đơn giản hóa thành 20.000 tam giác.

Tham Số

parts: Instances

Các đối tượng tham gia vào liên đới với phần đang gọi.

collisionfidelity: Enum.CollisionFidelity

Giá trị Enum.CollisionFidelity được tạo ra cho kết quả UnionOperation .

Giá Trị Mặc Định: "Default"
renderFidelity: Enum.RenderFidelity

Giá trị Enum.RenderFidelity được tạo ra.

Giá Trị Mặc Định: "Automatic"

Lợi Nhuận

Kết quả UnionOperation với tên mặc định Union .

Mẫu mã

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

Sự Kiện

TouchEnded

Lửa khi một phần dừng chạm vào một phần khác dưới các điều kiện tương tự như BasePart.Touched .

Sự kiện này hoạt động cùng với Workspace.TouchesUseCollisionGroups để xác định liệu nhóm va chạm</liệu có được công nhận cho phát hiện.

Tham Số

otherPart: BasePart

Mẫu mã

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

Sự kiện Bị chạm vào xảy ra khi một bộ phận tiếp xúc với một bộ phận khác. Ví ví dụ / trường hợp, nếu PartA va chạm vào PartB , thì 1>

Sự kiện này chỉ bắt đầu khi kết quả của chuyển động thể lý, vì vậy nó sẽ không bắt đầu nếu đặy tính CFrame đã được thay đổi để phần nào đó vượt qua một phần khá

Sự kiện này hoạt động cùng với Workspace.TouchesUseCollisionGroups để xác định liệu nhóm va chạm</liệu có được công nhận cho phát hiện.

Tham Số

otherPart: BasePart

Phần khác có liên hệ với phần đã được cung cấp.


Mẫu mã

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