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ớp cơ sở trừu tượng cho các đối tượng trong thế giới hiển thị và được mô phỏng về thể chất trong khi ở trong Workspace .Có một số thực hiện của BasePart , thông thường nhất là PartMeshPart .Những người khác bao gồm WedgePart , SpawnLocation , và đối tượng đơn Terrain .Nói chung, khi tài liệu tham chiếu đến một "phần," hầu hết BasePart các thực hiện sẽ hoạt động và không chỉ Part .

Đối với thông tin về cách BaseParts được nhóm thành các cơ thể cứng mô phỏng, xem Tập hợp .

Có nhiều đối tượng khác nhau tương tác với BasePart (không phải là Terrain ), bao gồm:

Tóm Tắt

Thuộc Tính

  • Đọc Song Song

    Xác định xem một phần có bất di chuyển bởi vật lý hay không.

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

    Tốc độ góc của lắp ráp phần.

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

    Trung tâm của khối lượng của lắp ráp phần trong không gian thế giới.

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

    Tốc độ song song của lắp ráp phần.

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

    Tổng khối lượng lắp ráp của phần.

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

    Một tham chiếu đến phần gốc của lắp ráp.

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

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

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

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

  • Đọc Song Song

    Xác định vị trí và hướng của BasePart trong thế giới.

  • Đọc Song Song

    Xác định xem một phần có thể va chạm với các phần khác hay không.

  • Đọc Song Song

    Xác định xem phần có được xem xét trong các hoạt động truy vấn không gian không.

  • Đọc Song Song

    Xác định xem sự kiện TouchedTouchEnded có bắt lửa trên phần hay không.

  • Đọc Song Song

    Xác định xem một phần có phải phát ra bóng hay không.

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

    Mô tả vị trí thế giới mà trung tâm khối lượng của một phần nằm.

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

    Mô tả tên của 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 phần.

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

    Chỉ ra các tính chất vật lý hiện tại của phần.

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

  • Đọc Song Song

    Dùng để bật hoặc tắt lực khí động trên các bộ phận và lắp ráp.

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

    The CFrame của các phạm vi vật lý của BasePart .

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

    Kích thước vật lý thực sự của BasePart theo quan điểm của động cơ vật lý.

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

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

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

    Xác định một hệ số cho BasePart.Transparency mà chỉ có thể nhìn thấy bởi khách hàng địa phương.

  • Đọc Song Song

    Xác định xem một phần có thể được chọn trong Studio hay không.

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

    Mô tả khối lượng của phần, sản phẩm của độ dày và khối lượng của nó.

  • Đọc Song Song

    Xác định xem phần có đóng góp vào tổng khối lượng hoặc lượng lưu lưu của cơ thâncứng hay không.

  • Đọc Song Song

    Xác định kết cấu và tính chất 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ả việc xoay của phần trong thế giới.

  • Đọc Song Song

    Xác định offset của trục của phần từ CFrame của nó.

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

    Mô tả vị trí của phần trong thế giới.

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

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

  • Đọc Song Song

    Xác định bao nhiêu một phần phản ánh hộp trời.

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

    Mô tả thay đổi nhỏ nhất về kích thước có thể 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 cỡ.

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

  • Đọc Song Song

    Quy tắc chính trong việc xác định phần gốc của một tập hợp.

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

    Sự xoay của phần theo độ cho ba trục.

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

    Xác định kích thước của một phần (chiều 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 phần (+ hướng Y).

  • Đọc Song Song

    Xác định bao nhiêu một phần có thể được nhìn thấy thông qua (ngược lại với độ mờ phầ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 Ghim xác định xem phần có bị cố định bởi vật lý hay không.Khi được bật, một phần sẽ không bao giờ thay đổi vị trí do trọng lực, va chạm phần khác, chồng lấp các phần khác hoặc bất kỳ nguyên nhân liên quan đến vật lý nào khác.Kết kết quảlà, hai phần neo sẽ không bao giờ bắn sự kiện BasePart.Touched lẫn nhau.

Một phần neo vẫn có thể 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 AssemblyLinearVelocityAssemblyAngularVelocity không bằng không.

Cuối cùng, nếu một phần không neo được kết nối với một phần neo bằng một đối tượng như một Weld, nó cũng sẽ hoạt động neo.Nếu một khớp như vậy bị phá vỡ, phần có thể bị ảnh hưởng bởi vật lý một lần nữa.Xem Tập hợp để biết thêm chi tiết.

Không thể đặt quyền sở hữu mạng trên các phần neo.Nếu tình trạng neo của một phần thay đổi trên máy chủ, sở hữu mạng của phần đó sẽ bị ảnh hưởng.

Mẫu mã

This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

AssemblyAngularVelocity

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

Vectơ tốc độ góc của lắp ráp phần này. Nó là tốc độ thay đổi hướng trong rad mỗi giây.

Tốc độ góc là giống nhau ở mọi điểm của lắp ráp.

Đặ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ế được ưu tiên, hoặc sử dụng BasePart:ApplyAngularImpulse() nếu bạn muốn thay đổi tốc độ ngay lập tức.

Nếu phần là sở hữu của máy chủ, thuộc tính này phải được thay đổi từ một máy chủ Script (không phải từ một LocalScript hoặc một Script với RunContext được đặt thành Enum.RunContext.Client ).Nếu phần thuộc về khách hàng thông qua quyền sở hữu tự động của , tính chất này có thể được thay đổi từ một kịch bản khách hàng hoặc một kịch bản máy chủ; thay đổi nó từ một kịch bản khách hàng cho một phần thuộc về máy chủ sẽ không có hiệu lực.

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 lắp ráp.

Nếu lắp ráp có một phần neo, trung tâm khối lượng của phần đó sẽ là trung tâm khối lượng của lắp ráp, và lắp ráp sẽ có khối lượng vô hạn.

Biết trung tâm của khối lượng có thể giúp lắp ráp duy trì ổn định.Một lực được áp dụng vào trung tâm của khối lượng sẽ không gây tăng tốc góc, chỉ là tuyến tính.Một lắp ráp với trọng tâm thấp sẽ có thời gian đứng vững tốt hơn dưới tác động của trọng lực.

AssemblyLinearVelocity

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

Vectơ tốc độ song song của lắp ráp phần này. Nó là tốc độ thay đổi vị trí của lắp ráp center of mass trong mỗi giây trong đinh tán.

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

Đặt tốc độ trực tiếp có thể dẫn đến chuyển động không thực tế.Sử dụng hạn chế VectorForce là ưu tiên, hoặc sử dụng BasePart:ApplyImpulse() nếu bạn muốn thay đổi tốc độ ngay lập tức.

Nếu phần là sở hữu của máy chủ, thuộc tính này phải được thay đổi từ một máy chủ Script (không phải từ một LocalScript hoặc một Script với RunContext được đặt thành Enum.RunContext.Client ).Nếu phần thuộc về khách hàng thông qua quyền sở hữu tự động của , tính chất này có thể được thay đổi từ một kịch bản khách hàng hoặc một kịch bản máy chủ; thay đổi nó từ một kịch bản khách hàng cho một phần thuộc về máy chủ sẽ không có hiệu lực.

AssemblyMass

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

Tổng của khối lượng tất cả các parts trong lắp ráp phần này.Các bộ phận có Massless và không phải là bộ phận gốc của lắp ráp sẽ không đóng góp vào AssemblyMass.

Nếu lắp ráp có một phần neo, khối lượng của lắp ráp được coi là vô hạn.Các hạn chế và các tương tác vật lý khác giữa các lắp ráp không neo với sự khác biệt lớn về khối lượng có thể gây ra sự bất ổn định.

AssemblyRootPart

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

Thuộc tính này chỉ ra rằng BasePart được chọn tự động để đại diện cho phần gốc của tập hợp.Nó là phần tương tự được trả về khi các nhà phát triển gọi GetRootPart() .

Phần gốc có thể được thay đổi bằng cách thay đổi RootPriority của các phần trong lắp ráp.

Các bộ phận tất cả đều chia sẻ cùng một Phần gốc của Bộ lắp đặt đều nằm trong cùng một lắp lắp.

Để biết thêm thông tin về các bộ phận gốc, xem Tập hợp.

AudioCanCollide

Đọc Song Song

BackSurface

Đọc Song Song

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

Hầu hết SurfaceTypes render một kết cấu trên bề mặt phần nếu BasePart.Material được đặt thành Plastic.Một số loại bề mặt - Hinge, Motor và SteppingMotor - sẽ hiển thị một vật trang trí 3D thay thế.Nếu thuộc tính này được chọn trong cửa sổ Thuộc tính, nó sẽ được tô sáng trong thế giới trò chơi tương tự như của một SurfaceSelection .

Mẫu mã

This code sample shows what each SurfaceType looks like on a part. In addition, it creates a BillboardGui label on the part with a TextLabel that reflects the name of the current SurfaceType.

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 các bề mặt của hai phần được đặt cạnh nhau, chúng có thể tạo ra một khối chung giữa chúng.Nếu được đặt thành Motor, BasePart.BottomSurfaceInput xác định cách một khớp motor nên hành động.

Hầu hết SurfaceTypes render một kết cấu trên bề mặt phần nếu BasePart.Material được đặt thành Plastic.Một số loại bề mặt - Hinge, Motor và SteppingMotor - sẽ hiển thị một vật trang trí 3D thay thế.Nếu thuộc tính này được chọn trong cửa sổ Thuộc tính, nó sẽ được tô sáng trong thế giới trò chơi tương tự như của một SurfaceSelection .

Mẫu mã

This code sample shows what each SurfaceType looks like on a part. In addition, it creates a BillboardGui label on the part with a TextLabel that reflects the name of the current SurfaceType.

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, điều này cũng xác định màu được sử dụng khi render kết cấu vật liệu.Để có thêm kiểm soát về màu sắc, bạn có thể sử dụng thuộc tính BasePart.Color (nó là một biến thể Color3 của thuộc tính này).Nếu cài đặtMàu, thuộc tính này sẽ sử dụng BrickColor gần nhất.

Các thuộc tính hình ảnh khác của một phần được xác định bởi BasePart.TransparencyBasePart.Reflectance .

Mẫu mã

This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

CFrame

Đọc Song Song

Thuộc tính CFrame xác định vị trí và hướng của BasePart trong thế giới.Nó hoạt động như một vị trí tham chiếu ngẫu nhiên trên hình học, nhưng đại diện cho trung tâm vật lý thực sự của nó.

Khi đặ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 khích 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.

Không giống như cài đặt BasePart.Position, cài đặt BasePart.CFrame sẽ luôn di chuyển phần đến chính xác được cho CFrame ; theo cách khác: không có kiểm tra chồng lấp xảy ra và giải pháp vật lý sẽ cố gắng giải quyết bất kỳ chồng lấp nào trừ khi cả hai phần đều không Anchored .

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

Mẫu mã

This code sample demonstrates setting a part's CFrame in many different ways. It showcases how to create and compose CFrame values. It references a sibling part called "OtherPart" for demonstrating relative positioning.

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 xem một phần có sẽ tương tác vật lý với các phần khác hay không.Khi bị vô hiệu hóa, các phần khác có thể đi qua gạch mà không bị gián đoạn.Các bộ phận được sử dụng cho trang trí thường có CanCollide bị vô hiệu hóa, vì chúng không cần phải được xem xét bởi động cơ vật lý.

Nếu một phần không phải là BasePart.Anchored và có CanCollide bị vô hiệu hóa, nó có thể rơi 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ể kích hoạt sự kiện BasePart.Touched (cũng như các bộ phận khác chạm vào chúng).Bạn có thể vô hiệu hóa nó với BasePart.CanTouch .

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

Mẫu mã

This code sample shows how a part can fade away when touched by a Humanoid then reappear a moment after to create a passable door.

Fade Door

-- Paste into a Script inside a tall part
local part = script.Parent
local OPEN_TIME = 1
-- Can the door be opened at the moment?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("Black")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("Bright blue")
end
local function onTouch(otherPart)
-- If the door was already open, do nothing
if debounce then
print("D")
return
end
-- Check if touched by a Humanoid
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("not human")
return
end
-- Perform the door opening sequence
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()

CanQuery

Đọc Song Song

CanQuery xác định xem phần có được xem xét trong các hoạt động truy vấn không gian, chẳng hạn như GetPartBoundsInBox hoặc Raycast .CanCollide cũng phải bị vô hiệu hóa khi vô hiệu hóa CanQuery.Các chức năng này sẽ không bao giờ bao gồm các phần có CanQuery và CanCollide là sai.

Ngoài thuộc tính này, cũng có thể loại bỏ các phần là con cháu của một danh sách các phần nhất định bằng cách sử dụng một đối tượng OverlapParams hoặc RaycastParams khi gọi các chức năng truy vấn không gian.

CanTouch

Đọc Song Song

Tính chất này xác định xem sự kiện TouchedTouchEnded có bắt lửa trên phần hay không.Nếu true , các bộ phận tiếp xúc khác cũng phải có CanTouch được đặt thành true để các sự kiện chạm được bắn ra.Nếu false , sự kiện chạm không thể được thiết lập cho phần và cố gắng làm như vậy sẽ gây ra lỗi.Tương tự, nếu thuộc tính được đặt thành false sau khi sự kiện chạm được kết nối, sự kiện sẽ bị ngắt kết nối và TouchTransmitter bị xóa.

Lưu ý rằng logic va chạm này có thể được đặt để tôn trọng nhóm va chạm thông qua thuộc tính Workspace.TouchesUseCollisionGroups.Nếu true , các bộ phận trong các nhóm không xung đột sẽ bỏ qua cả hai sự kiện va chạm , do đó làm cho tính chất này trở nên vô nghĩa.

Hiệu suất

Có một sự cải thiện nhỏ về hiệu suất trên các bộ phận có cả CanTouchCanCollide được đặt thành false , vì các bộ phận này sẽ không bao giờ cần phải tính toán bất kỳ loại va chạm nào.Tuy nhiên, chúng vẫn có thể bị ảnh hưởng bởi các truy vấn RaycastsOverlapParams .

CastShadow

Đọc Song Song

Xác định xem một phần có phải phát ra bóng hay không.

Lưu ý rằng tính năng này không được thiết kế để cải thiện hiệu suất.Nó chỉ nên bị vô hiệu hóa trên các phần mà bạn muốn che đi những bóng phần phát ra.Vô hiệu hóa thuộc tính này cho một phần cụ thể có thể gây ra các hiện vật hình họa trên những bóng được chiếu lên phần đó.

CenterOfMass

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

Thuộc tính CenterOfMass mô tả vị trí địa phương của trung tâm khối lượng của một phần.Nếu đây là lắp ráp một phần duy nhất, đây là AssemblyCenterOfMass được chuyển đổi từ không gian thế giới sang không gian địa phương.Trên đơn giản Parts, trung tâm của khối lượng luôn luôn là (0,0,0).Tuy nhiên, nó có thể thay đổi cho WedgePart hoặc MeshPart tuy nhiên.

CollisionGroup

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

Thuộc tính CollisionGroup mô tả tên của nhóm va chạm của 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à "Default" .Giá trị này không thể trống.

Mặc dù chính thuộc tính này không được sao lưu, nhưng động cơ sao lưu giá trị thông qua một thuộc tính riêng tư khác để giải quyết các vấn đề không tương thích ngược.

Mẫu mã

This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().

PhysicsService:RegisterCollisionGroup

local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false

Color

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 kết cấu vật liệu.Nếu thuộc tính này được cài đặt, BasePart.BrickColor sẽ sử dụng BrickColor gần nhất với giá trị Color3.

Các thuộc tính hình ảnh khác của một phần được xác định bởi BasePart.TransparencyBasePart.Reflectance .

Mẫu mã

This code sample colors a player's entire character based on how much health they have. It generates a color based on their max health, then sets the color properties of objects within their character, removing any extra objects.

Character Health Body Color

-- Paste into a Script within StarterCharacterScripts
-- Then play the game, and fiddle with your character's health
local char = script.Parent
local human = char.Humanoid
local colorHealthy = Color3.new(0.4, 1, 0.2)
local colorUnhealthy = Color3.new(1, 0.4, 0.2)
local function setColor(color)
for _, child in pairs(char:GetChildren()) do
if child:IsA("BasePart") then
child.Color = color
while child:FindFirstChildOfClass("Decal") do
child:FindFirstChildOfClass("Decal"):Destroy()
end
elseif child:IsA("Accessory") then
child.Handle.Color = color
local mesh = child.Handle:FindFirstChildOfClass("SpecialMesh")
if mesh then
mesh.TextureId = ""
end
elseif child:IsA("Shirt") or child:IsA("Pants") then
child:Destroy()
end
end
end
local function update()
local percentage = human.Health / human.MaxHealth
-- Create a color by tweening based on the percentage of your health
-- The color goes from colorHealthy (100%) ----- > colorUnhealthy (0%)
local color = Color3.new(
colorHealthy.R * percentage + colorUnhealthy.r * (1 - percentage),
colorHealthy.G * percentage + colorUnhealthy.g * (1 - percentage),
colorHealthy.B * percentage + colorUnhealthy.b * (1 - percentage)
)
setColor(color)
end
update()
human.HealthChanged:Connect(update)

CurrentPhysicalProperties

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

CurrentPhysicalProperties chỉ ra các tính chất vật lý hiện tại của phần.Bạn có thể đặt các giá trị tùy chỉnh cho các tính chất vật lý cho mỗi phần, vật liệu tùy chỉnh , và sự thay thế vật liệu.Động cơ ưu tiên các định nghĩa chi tiết hơn khi xác định các tính chất vật lý hiệu quả của một phần.Các giá trị trong danh sách sau đây được sắp xếp theo thứ tự từ cao đến thấp ưu tiên:

  • Tính chất vật lý tùy chỉnh của phần
  • Tính chất vật lý tùy chỉnh của vật liệu tùy chỉnh của phần
  • Tính chất vật lý tùy chỉnh của sự thay thế vật liệu của phần vật liệu
  • Tính chất vật lý mặc định của vật liệu của 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ý khác nhau của một Part, chẳng hạn như độ dày, ma sát và độ đàn hồi.

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

Mẫu mã

This code sample demonstrates how to set the CustomPhysicalProperties property of a part.

Set CustomPhysicalProperties

local part = script.Parent
-- This will make the part light and bouncy!
local DENSITY = 0.3
local FRICTION = 0.1
local ELASTICITY = 1
local FRICTION_WEIGHT = 1
local ELASTICITY_WEIGHT = 1
local physProperties = PhysicalProperties.new(DENSITY, FRICTION, ELASTICITY, FRICTION_WEIGHT, ELASTICITY_WEIGHT)
part.CustomPhysicalProperties = physProperties

EnableFluidForces

Đọc Song Song

Khi đúng, và khi Workspace.FluidForces được bật, gây ra cho động cơ vật lý tính toán lực khí động học trên BasePart này.

ExtentsCFrame

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

The CFrame of the physical extents of the BasePart , đại diện cho trung tâm vật lý của nó.

ExtentsSize

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

Kích thước vật lý thực sự của BasePart theo quan điểm của động cơ vật lý, ví dụ trong phát hiện va chạm .

FrontSurface

Đọc Song Song

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

Hầu hết SurfaceTypes render một kết cấu trên bề mặt phần nếu BasePart.Material được đặt thành Plastic.Một số loại bề mặt bao gồm khớp, động cơ và SteppingMotor hiển thị một vật trang trí 3D thay thế.Nếu thuộc tính này được chọn trong cửa sổ Thuộc tính, nó sẽ được tô sáng trong thế giới trò chơi tương tự như của một SurfaceSelection .

Mẫu mã

This code sample shows what each SurfaceType looks like on a part. In addition, it creates a BillboardGui label on the part with a TextLabel that reflects the name of the current SurfaceType.

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 LeftSurface xác định loại bề mặt được sử dụng cho hướng -X của một phần.Khi các bề mặt của hai phần được đặt cạnh nhau, chúng có thể tạo ra một khối chung giữa chúng.Nếu được đặt thành Motor, BasePart.LeftSurfaceInput xác định cách một khớp motor nên hành động.

Hầu hết SurfaceTypes render một kết cấu trên bề mặt phần nếu BasePart.Material được đặt thành Plastic.Một số loại bề mặt bao gồm khớp, động cơ và SteppingMotor hiển thị một vật trang trí 3D thay thế.Nếu thuộc tính này được chọn trong cửa sổ Thuộc tính, nó sẽ được tô sáng trong thế giới trò chơi tương tự như của một SurfaceSelection .

Mẫu mã

This code sample shows what each SurfaceType looks like on a part. In addition, it creates a BillboardGui label on the part with a TextLabel that reflects the name of the current SurfaceType.

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 nhân số cho BasePart.Transparency mà chỉ có thể nhìn thấy đối với khách hàng địa phương.Nó không sao chép từ khách hàng sang máy chủ và hữu ích khi một phần không nên hiển thị cho một khách hàng cụ thể, chẳng hạn như cách người chơi không nhìn thấy các bộ phận cơ thể của họ khi họ thu phóng vào chế độ người thứ nhất.

Tính năng này thay đổi độ trong suốt của phần địa phương thông qua công thức sau, với các giá trị kết quả bị giới hạn giữa 0 và 1.


clientTransparency = 1 - ((1 - part.Transparency) * (1 - part.LocalTransparencyModifier))

<th>Trình chỉnh sửa minh bạch địa phương</th>
<th>Bản minh bạch bên máy chủ</th>
<th>Bản minh bạch bên khách</th>
</tr>
</thead>
<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ốt

Locked

Đọc Song Song

Thuộc tính Bị khóa xác định xem liệu một part (hoặc một model nó có chứa trong) có thể được chọn trong Roblox Studio bằng cách nhấp vào nó.Tính năng này thường được bật trên các phần trong mô hình môi trường không đang được chỉnh sửa tại thời điểm này.Roblox Studio có công cụ Khóa/Mở khóa tất cả có thể chuyển đổi trạng thái Khóa của mỗi phần con trong một mô hình cùng một lúc.

Mẫu mã

This code sample uses the concept of recursion to unlock all parts that are a descendant of a model.

Recursive Unlock

-- Paste into a Script within a Model you want to unlock
local model = script.Parent
-- This function recurses through a model's heirarchy and unlocks
-- every part that it encounters.
local function recursiveUnlock(object)
if object:IsA("BasePart") then
object.Locked = false
end
-- Call the same function on the children of the object
-- The recursive process stops if an object has no children
for _, child in pairs(object:GetChildren()) do
recursiveUnlock(child)
end
end
recursiveUnlock(model)

Mass

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

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

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

Massless

Đọc Song Song

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

Nếu phần là phần gốc của riêng nó theo AssemblyRootPart, phần này sẽ bị bỏ qua cho phần đó, và nó vẫn sẽ đóng góp khối lượng và lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượng lượngCác bộ phận không có khối không bao giờ nên trở thành một phần rễ lắp ráp trừ khi tất cả các bộ phận khác trong lắp ráp cũng không có khối.

Đ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 khối lượng không đồng bộ kết hợp với một khối lượng va chạm đơn giản hơn.

Xem thêm Tập hợp, một bài viết tài liệu về các phần gốc và cách sử dụng chúng.

Đọc Song Song

Tính chất Vật liệu cho phép một người xây dựng đặt kết cấu và tính chất vật lý mặc định của một phần (trong trường hợp BasePart.CustomPhysicalProperties chưa được thiết lập).Vật liệu nhựa mặc định có kết cấu rất nhẹ, và vật liệu SmoothPlastic không có kết cấu chút tất cả.Một số kết cấu vật liệu như DiamondPlate và Granite có kết cấu rất rõ ràng.Kết cấu của mỗi vật liệu phản ánh ánh sáng mặt trời khác nhau, đặc biệt là Tấm.

Khi đặt thuộc tính này và bật BasePart.CustomPhysicalProperties thì sẽ sử dụng các thuộc tính vật lý mặc định của một vật liệu.Ví ví dụ / trường hợp, DiamondPlate là một vật liệu rất dày trong khi Wood rất nhẹ.Mật độ của một phần xác định xem nó có nổi trên nước địa hình hay không.

Hành vi thay đổi vật liệu Kính thay đổi trên các cài đặt đồ họa vừa phải.Nó áp dụng một chút phản xạ (tương tự như BasePart.Reflectance ) và méo hình ảnh.Hiệu ứng đặc biệt rõ ràng trên các bộ phận hình cầu (thiết lập BasePart.Shape đến Ball).Các đối tượng mờ mờ và các bộ phận thủy tinh phía sau Kính không thể nhìn thấy.

Mẫu mã

This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

MaterialVariant

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

Hệ thống tìm kiếm MaterialVariant với tên MaterialVariant cụ thể và đánh máy.Nếu nó thành công tìm thấy một ví dụ MaterialVariant phù hợp, nó sử dụng ví dụ MaterialVariant này để thay thế vật liệu mặc định.Vật liệu mặc định có thể là vật liệu được tích hợp hoặc vật liệu bị xóa bỏ được định nghĩa trong MaterialService .

Orientation

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

Tính chất Hướng mô tả sự xoay của phần trong các độ xung quanh trục X, Y và Z bằng Vector3.Các vòng xoay được áp dụng theo thứ tự Y → X → Z.Điều này khác với đúng góc Euler và thay vào đó là góc Tait-Bryan, mô tả yaw, pitch và roll .Nó cũng đáng chú ý làm thế nào tính chất này khác với constructor CFrame.Angles() , áp dụng các vòng xoay theo trật tự khác (Z → Y → X).Để kiểm soát tốt hơn về sự xoay của một phần, được khuyến nghị rằng BasePart.CFrame được đặt thay thế.

Khi đặt tính chất này bất kỳ Welds hoặc Motor6Ds kết nối với phần này sẽ có tính chất phù hợp C0 hoặc C1 được cập nhật và cho phép phần di chuyển so với bất kỳ phần khác nó được kết nối.

Hạn chế hàn cũng sẽ bị vô hiệu hóa tạm thời và được bật lại trong quá trình di chuyển.

Mẫu mã

This code sample rotates a part continually on the Y axis.

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 xác định offset của trục của phần từ CFrame , đó là part:GetPivot() giống như part.CFrame * part.PivotOffset .

Điều này thuận tiện để đặt trục sang một vị trí trong không gian địa phương , nhưng việc đặt trục của một phần sang một vị trí trong không gian thế giới có thể được thực hiện như sau:


local Workspace = game:GetService("Workspace")
local part = Workspace.BluePart
local desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)
part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)

Mẫu mã

This code sample shows a custom function for resetting the pivot of a model back to the center of that model's bounding box.

Reset Pivot

local function resetPivot(model)
local boundsCFrame = model:GetBoundingBox()
if model.PrimaryPart then
model.PrimaryPart.PivotOffset = model.PrimaryPart.CFrame:ToObjectSpace(boundsCFrame)
else
model.WorldPivot = boundsCFrame
end
end
resetPivot(script.Parent)

This code sample creates a clock at the origin with a minute, second, and hour hand, and makes it tick, displaying the local time.

Clock Hands

local function createHand(length, width, yOffset)
local part = Instance.new("Part")
part.Size = Vector3.new(width, 0.1, length)
part.Material = Enum.Material.Neon
part.PivotOffset = CFrame.new(0, -(yOffset + 0.1), length / 2)
part.Anchored = true
part.Parent = workspace
return part
end
local function positionHand(hand, fraction)
hand:PivotTo(CFrame.fromEulerAnglesXYZ(0, -fraction * 2 * math.pi, 0))
end
-- Create dial
for i = 0, 11 do
local dialPart = Instance.new("Part")
dialPart.Size = Vector3.new(0.2, 0.2, 1)
dialPart.TopSurface = Enum.SurfaceType.Smooth
if i == 0 then
dialPart.Size = Vector3.new(0.2, 0.2, 2)
dialPart.Color = Color3.new(1, 0, 0)
end
dialPart.PivotOffset = CFrame.new(0, -0.1, 10.5)
dialPart.Anchored = true
dialPart:PivotTo(CFrame.fromEulerAnglesXYZ(0, (i / 12) * 2 * math.pi, 0))
dialPart.Parent = workspace
end
-- Create hands
local hourHand = createHand(7, 1, 0)
local minuteHand = createHand(10, 0.6, 0.1)
local secondHand = createHand(11, 0.2, 0.2)
-- Run clock
while true do
local components = os.date("*t")
positionHand(hourHand, (components.hour + components.min / 60) / 12)
positionHand(minuteHand, (components.min + components.sec / 60) / 60)
positionHand(secondHand, components.sec / 60)
task.wait()
end

Position

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

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

Khi đặt tính chất này bất kỳ Welds hoặc Motor6Ds kết nối với phần này sẽ có tính chất phù hợp C0 hoặc C1 được cập nhật và cho phép phần di chuyển so với bất kỳ phần khác nó được kết nối.

Hạn chế hàn cũng sẽ bị vô hiệu hóa tạm thời và được bật 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 kể từ khi vật lý của phần được cập nhật lần cuối trên máy khách địa phương (hoặc trên máy chủ).Trả về 0 khi phần không có vật lý (Được neo)

Reflectance

Đọc Song Song

Thuộc tính Reflectance xác định bao nhiêu một part phản ánh skybox.Một giá trị là 0 cho thấy phần không phản chiếu gì tất cả, và một giá trị là 1 cho thấy phần nên phản chiếu hoàn toàn.

Độ phản chiếu không bị ảnh hưởng bởi BasePart.Transparency, trừ khi phần hoàn toàn minh bạch, trong trường hợp đó độ phản chiếu sẽ không hiển thị tất cả.Tỉ lệ phản xạ có thể hoặc không thể bị bỏ qua tùy thuộc vào BasePart.Material của phần.

Mẫu mã

This code sample causes a part to blink its Reflectance and a PointLight every time it is touched. It uses a pattern that prevents multiple concurrent function calls from fighting with each other.

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 chỉ đọc mô tả thay đổi nhỏ nhất về kích thước có thể thực hiện bởi phương pháp BasePart:Resize().Nó khác nhau giữa các thực hiện của lớp trừu tượng BasePart .Ví ví dụ / trường hợp, Part có bộ này là 1 và TrussPart có bộ này là 2 (vì các phần truss riêng lẻ có kích thước 2x2x2).

Mẫu mã

This code sample creates a Handles object and shows how to set the Faces property of the object. It also references ResizeableFaces of a part. Try placing this script in multiple kinds of parts to see how ResizeableFaces varies.

Resize Handles

-- Put this Script in several kinds of BasePart, like
-- Part, TrussPart, WedgePart, CornerWedgePart, etc.
local part = script.Parent
-- Create a handles object for this part
local handles = Instance.new("Handles")
handles.Adornee = part
handles.Parent = part
-- Manually specify the faces applicable for this handle
handles.Faces = Faces.new(Enum.NormalId.Top, Enum.NormalId.Front, Enum.NormalId.Left)
-- Alternatively, use the faces on which the part can be resized.
-- If part is a TrussPart with only two Size dimensions
-- of length 2, then ResizeableFaces will only have two
-- enabled faces. For other parts, all faces will be enabled.
handles.Faces = part.ResizeableFaces

ResizeableFaces

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

Tính năng ResizableFaces (với một e , không phải ResizableFaces) mô tả sử dụng một đối tượng Faces các khuôn mặt khác nhau mà một phần có thể được thay đổi kích thước.Đối với hầu hết các triển khai của BasePart , chẳng hạn như PartWedgePart , tính năng này bao gồm tất cả các khuôn mặt.Tuy nhiên, TrussPart sẽ đặt bộ ResizeableFaces của nó chỉ thành hai khuôn mặt vì những loại phần như vậy phải có hai kích thước BasePart.Size dài 2.Tính năng này thường được sử dụng phổ biến nhất với các công cụ được sử dụng để xây dựng và thao tác các bộ phận và có rất ít sử dụng bên ngoài ngữ cảnh đó.Lớp Handles có thuộc tính Handles.Faces, có thể được sử dụng kết hợp với thuộc tính này để hiển thị chỉ các tay cầm trên khuôn mặt có thể thay đổi kích thước trên một phần

Mẫu mã

This code sample creates a Handles object and shows how to set the Faces property of the object. It also references ResizeableFaces of a part. Try placing this script in multiple kinds of parts to see how ResizeableFaces varies.

Resize Handles

-- Put this Script in several kinds of BasePart, like
-- Part, TrussPart, WedgePart, CornerWedgePart, etc.
local part = script.Parent
-- Create a handles object for this part
local handles = Instance.new("Handles")
handles.Adornee = part
handles.Parent = part
-- Manually specify the faces applicable for this handle
handles.Faces = Faces.new(Enum.NormalId.Top, Enum.NormalId.Front, Enum.NormalId.Left)
-- Alternatively, use the faces on which the part can be resized.
-- If part is a TrussPart with only two Size dimensions
-- of length 2, then ResizeableFaces will only have two
-- enabled faces. For other parts, all faces will be enabled.
handles.Faces = part.ResizeableFaces

RightSurface

Đọc Song Song

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

Hầu hết SurfaceTypes render một kết cấu trên bề mặt phần nếu BasePart.Material được đặt thành Plastic.Một số loại bề mặt bao gồm khớp, động cơ và SteppingMotor sẽ hiển thị một vật trang trí 3D thay thế.Nếu thuộc tính này được chọn trong cửa sổ Thuộc tính, nó sẽ được tô sáng trong thế giới trò chơi tương tự như của một SurfaceSelection .

Mẫu mã

This code sample shows what each SurfaceType looks like on a part. In addition, it creates a BillboardGui label on the part with a TextLabel that reflects the name of the current SurfaceType.

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

Thuộc tính này là một số nguyên giữa -127 và 127 có ưu tiên hơn tất cả các quy tắc khác cho phân loại phần gốc.Khi xem xét nhiều phần không phải là Anchored và chia sẻ cùng một giá trị Massless , một phần có ưu tiên cao hơn RootPriority sẽ có ưu tiên hơn những phần có ưu tiên thấp hơn RootPriority .

Bạn có thể sử dụng thuộc tính này để kiểm soát phần nào trong một tập hợp là phần gốc và giữ phần gốc ổn định nếu thay đổi kích thước.

Xem thêm Tập hợp, một bài viết tài liệu về các phần gốc và cách sử dụng chúng.

Rotation

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

Sự xoay của phần theo độ cho ba trục.

Khi đặt tính chất này bất kỳ Welds hoặc Motor6Ds kết nối với phần này sẽ có tính chất phù hợp C0 hoặc C1 được cập nhật và cho phép phần di chuyển so với bất kỳ phần khác nó được kết nối.

Hạn chế hàn cũng sẽ bị vô hiệu hóa tạm thời và được bật lại trong quá trình di chuyển.

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

Thuộc tính của một phần Size xác định kích thước hình ảnh của nó, trong khi ExtentsSize đại diện cho kích thước thực sử dụng bởi động cơ vật lý, chẳng hạn như trong phát hiện va chạm .Các chiều cụ thể (chiều dài, chiều rộng, chiều cao) có thể thấp như 0.001 và cao như 2048.Kích thước chiều dưới 0.05 sẽ được hiển thị visually như thể kích thước của phần là 0.05.

Kích thước của phần xác định khối lượng của nó được đưa ra bởi BasePart:GetMass() . Phần của một phần Size được sử dụng bởi một loạt các đối tượng khác:

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

Mẫu mã

This code sample constructs a pyramid by stacking parts that get progressively smaller. It also colors the parts so they blend between a start color and end color.

Pyramid Builder

local TOWER_BASE_SIZE = 30
local position = Vector3.new(50, 50, 50)
local hue = math.random()
local color0 = Color3.fromHSV(hue, 1, 1)
local color1 = Color3.fromHSV((hue + 0.35) % 1, 1, 1)
local model = Instance.new("Model")
model.Name = "Tower"
for i = TOWER_BASE_SIZE, 1, -2 do
local part = Instance.new("Part")
part.Size = Vector3.new(i, 2, i)
part.Position = position
part.Anchored = true
part.Parent = model
-- Tween from color0 and color1
local perc = i / TOWER_BASE_SIZE
part.Color = Color3.new(
color0.R * perc + color1.R * (1 - perc),
color0.G * perc + color1.G * (1 - perc),
color0.B * perc + color1.B * (1 - perc)
)
position = position + Vector3.new(0, part.Size.Y, 0)
end
model.Parent = workspace
Đọc Song Song

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

Hầu hết SurfaceTypes render một kết cấu trên bề mặt phần nếu BasePart.Material được đặt thành Plastic.Một số loại bề mặt - Hinge, Motor và SteppingMotor - sẽ hiển thị một vật trang trí 3D thay thế.Nếu thuộc tính này được chọn trong cửa sổ Thuộc tính, nó sẽ được tô sáng trong thế giới trò chơi tương tự như của một SurfaceSelection .

Mẫu mã

This code sample shows what each SurfaceType looks like on a part. In addition, it creates a BillboardGui label on the part with a TextLabel that reflects the name of the current SurfaceType.

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 minh bạch kiểm soát tầm nhìn của một phần trong phạm vi từ 0 đến 1, nơi 0 hoàn toàn có thể nhìn thấy (mờ), và một giá trị của 1 hoàn toàn không thể nhìn thấy (không được hiển thị tất cả).

BasePart.Reflectance có thể giảm tổng sự minh bạch của một chiếc gạch nếu được đặt thành một giá trị gần 1.

Trong khi các bộ phận hoàn toàn minh bạch không được hiển thị tại tất cả, các đối tượng một phần minh bạch có một số chi phí hiển thị đáng kể.Có nhiều phần mờ có thể làm chậm hiệu lựcsuất của trò chơi.

Khi các bộ phận trong suốt chồng lấp, lệnh render có thể hoạt động không thể đoán trước - hãy cố gắng giữ các bộ phận bán trong suốt không chồng lấp để tránh điều này.

The BasePart.LocalTransparencyModifier là một nhân tố đến Transparency chỉ có thể nhìn thấy được bởi khách hàng địa phương.

Mẫu mã

This code sample shows how a part can fade away when touched by a Humanoid then reappear a moment after to create a passable door.

Fade Door

-- Paste into a Script inside a tall part
local part = script.Parent
local OPEN_TIME = 1
-- Can the door be opened at the moment?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("Black")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("Bright blue")
end
local function onTouch(otherPart)
-- If the door was already open, do nothing
if debounce then
print("D")
return
end
-- Check if touched by a Humanoid
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("not human")
return
end
-- Perform the door opening sequence
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()

This code sample gives the local client X-ray vision using LocalTransparencyModifier. It allows the player to see through all parts in the Workspace, which are found using recursion.

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
Giá Trị Mặc Định: ""
angVelocity: Vector3
Giá Trị Mặc Định: "0, 0, 0"

Lợi Nhuận

ApplyAngularImpulse

()

Áp dụng một đợt lực góc tức thời cho quá trình lắp ráp của phần này, khiến quá trình lắp ráp quay.

Tốc độ góc cuối cùng từ xung dựa vào mass của lắp ráp.Vì vậy, cần có một động lực cao hơn để di chuyển các lắp ráp lớn hơn.Các động lực hữu ích cho các trường hợp bạn muốn áp dụng lực ngay lập tức, chẳng hạn như một vụ nổ hoặc va chạm.

Nếu phần là sở hữu bởi máy chủ, chức năng này phải được gọi từ một máy chủ Script (không từ một LocalScript hoặc một Script với RunContext được đặt thành Enum.RunContext.Client ).Nếu phần thuộc về khách hàng thông qua quyền sở hữu tự động , chức năng này có thể được gọi từ một kịch bản khách hàng hoặc một kịch bản máy chủ; gọi nó từ kịch bản khách hàng cho một phần thuộc về máy chủ sẽ không có hiệu lực.

Tham Số

impulse: Vector3

Một vector động lực góc được áp dụng cho lắp ráp.

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

Lợi Nhuận

()

ApplyImpulse

()

Chức năng này áp dụng một đợt lực tức thời cho quá trình lắp ráp của phần này.

Lực được áp dụng tại lắp ráp center of mass , vì vậy chuyển động cuối cùng chỉ là lineare.

Tốc độ cuối cùng từ xung lực dựa vào mass của lắp ráp.Vì vậy, cần có một động lực cao hơn để di chuyển các lắp ráp lớn hơn.Các động lực hữu ích cho các trường hợp bạn muốn áp dụng lực ngay lập tức, chẳng hạn như một vụ nổ hoặc va chạm.

Nếu phần là sở hữu bởi máy chủ, chức năng này phải được gọi từ một máy chủ Script (không từ một LocalScript hoặc một Script với RunContext được đặt thành Enum.RunContext.Client ).Nếu phần thuộc về khách hàng thông qua quyền sở hữu tự động , chức năng này có thể được gọi từ một kịch bản khách hàng hoặc một kịch bản máy chủ; gọi nó từ kịch bản khách hàng cho một phần thuộc về máy chủ sẽ không có hiệu lực.

Tham Số

impulse: Vector3

Một vector kích thích hướng tuyến tính để áp dụng cho lắp ráp.

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

Lợi Nhuận

()

ApplyImpulseAtPosition

()

Chức năng này áp dụng một lực đẩy tức thời cho lắp ráp phần này, tại vị trí được chỉ định trong không gian thế giới.

Nếu vị trí không ở tại vị trí của lắp ráp center of mass, tính chất đột xuất sẽ gây ra chuyển động vị trí và quay.

Tốc độ cuối cùng từ xung lực dựa vào mass của lắp ráp.Vì vậy, cần có một động lực cao hơn để di chuyển các lắp ráp lớn hơn.Các động lực có ích cho các trường hợp mà các nhà phát triển muốn áp dụng lực ngay lập tức, chẳng hạn như một vụ nổ hoặc va chạm.

Nếu phần là sở hữu bởi máy chủ, chức năng này phải được gọi từ một máy chủ Script (không từ một LocalScript hoặc một Script với RunContext được đặt thành Enum.RunContext.Client ).Nếu phần thuộc về khách hàng thông qua quyền sở hữu tự động , chức năng này có thể được gọi từ một kịch bản khách hàng hoặc một kịch bản máy chủ; gọi nó từ kịch bản khách hàng cho một phần thuộc về máy chủ sẽ không có hiệu lực.

Tham Số

impulse: Vector3

Một vector xung được áp dụng cho lắp ráp.

Giá Trị Mặc Định: ""
position: Vector3

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

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

Lợi Nhuận

()

CanCollideWith

Ghi Song Song

Trả về 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 phần.Chức năng này sẽ lỗi nếu phần được chỉ định không phải là BasePart.

Tham Số

part: BasePart

Phần được chỉ định đang được kiểm tra để có va chạm.

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

Lợi Nhuận

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

CanSetNetworkOwnership

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

Giá trị trả lại của chức năng kiểm tra xem bạn có thể gọi BasePart:SetNetworkOwner() hoặc BasePart:SetNetworkOwnershipAuto() mà không gặp phải lỗi hay không.Nó trả về true nếu bạn có thể thay đổi/đọc quyền sở hữu mạng, hoặc trả về false và lý do bạn không thể, như một chuỗi.


Lợi Nhuận

Bạn có thể sửa đổi hoặc đọc quyền sở hữu mạng và lý do không.

Mẫu mã

This example checks whether or not the network ownership of the first BasePart named Part in the Workspace can be set.

Check if a Part's Network Ownership Can Be Set

local part = workspace:FindFirstChild("Part")
if part and part:IsA("BasePart") then
local canSet, errorReason = part:CanSetNetworkOwnership()
if canSet then
print(part:GetFullName() .. "'s Network Ownership can be changed!")
else
warn("Cannot change the Network Ownership of " .. part:GetFullName() .. " because: " .. errorReason)
end
end

GetClosestPointOnSurface

Tham Số

position: Vector3
Giá Trị Mặc Định: ""

Lợi Nhuận

GetConnectedParts

Instances
Ghi Song Song

Trả về một bảng các bộ phận kết nối với đối tượng bằng bất kỳ loại khớp cứng nào.

Nếu recursive là đúng, chức năng này sẽ trả lại tất cả các bộ phận trong lắp ráp được kết nối cứng với BasePart.

Khớp cứng

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

Tham Số

recursive: boolean

Một bảng các bộ phận kết nối với đối tượng bằng bất kỳ loại joint nào.

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

Lợi Nhuận

Instances

GetJoints

Instances
Ghi Song Song

Trả lại tất cả Các khớp hoặc Giới hạn được kết nối với Phần này.


Lợi Nhuận

Instances

Một mảng của tất cả Các khớp hoặc Giới hạn được kết nối với Phần.

GetMass

Ghi Song Song

Nhận đượcMass trả về giá trị của thuộc tính đọc chỉ Mass chỉ.

Chức năng này xuất hiện trước thuộc tính Mass. Nó vẫn được hỗ trợ cho tương thích ngược; bạn nên sử dụng thuộc tính Mass trực tiếp.


Lợi Nhuận

Mật độ của phần.

Mẫu mã

This example creates a new part, myPart, in the game's Workspace, with dimensions 4x6x4 studs. The part is also anchored.

Then, myMass is set to equal the mass of the new part. The mass of the part is printed at the end of the print statement:

My part's mass is ...

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 là chủ sở hữu mạng của phần này, hoặc nil trong trường hợp của máy chủ.


Lợi Nhuận

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

GetNetworkOwnershipAuto

Ghi Song Song

Trả về true nếu động cơ trò chơi tự động quyết định chủ sở hữu mạng cho phần này.


Lợi Nhuận

Whether động cơ trò chơi tự động quyết định chủ sở hữu mạng cho phần này.

GetNoCollisionConstraints

Instances

Lợi Nhuận

Instances

GetRootPart

Ghi Song Song

Trả lại phần cơ bản của một tập hợp.Khi di chuyển một tập hợp các bộ phận bằng cách sử dụng CFrame .thật quan trọng để di chuyển phần cơ sở này (điều này sẽ di chuyển tất cả các phần khác kết nối với nó tương ứng).Thêm thông tin có sẵn trong bài Tập hợp.

Chức năng này xuất hiện trước các thuộc tính AssemblyRootPart . Nó vẫn được hỗ trợ cho tương thích ngược, 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 lắp ráp (một bộ sưu tập các bộ phận được kết nối với nhau).

GetTouchingParts

Instances

Trả về một bảng tất cả các bộ phận đang tương tác vật lý với bộ phận này.Nếu phần chính có CanCollide được đặt thành false, thì chức năng này trả về một bảng trống trừ khi phần có một đối tượng TouchInterest được gán cho nó (ý nghĩa là có thứ gì đó được kết nối với sự kiện Chạm của nó).Các bộ phận liền kề nhau nhưng không chồng lấp là không được coi là chạm.Chức năng này xuất hiện trước chức năng WorldRoot:GetPartsInPart() , cung cấp thêm sự linh hoạt và tránh các quy tắc đặc biệt TouchInterest được mô tả ở trên.Sử dụng WorldRoot:GetPartsInPart() thay thế.


Lợi Nhuận

Instances

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

GetVelocityAtPosition

Ghi Song Song

Trả về tốc độ song song của lắp ráp phần ở vị trí đã cho so với phần này.Nó có thể được sử dụng để xác định tốc độ tuyến tính của các bộ phận trong một lắp ráp không phải là bộ phận gốc.Nếu lắp ráp không có tốc độ góc, thì tốc độ lineary sẽ luôn giống nhau cho mọi vị trí.

Tham Số

position: Vector3
Giá Trị Mặc Định: ""

Lợi Nhuận

IsGrounded

Ghi Song Song

Trả về true nếu đối tượng được kết nối với một phần sẽ giữ nó ở vị trí (ví dụ một phần Anchored), nếu không trả về false.Trong một lắp ráp có một phần Anchored , mọi phần khác được ghim xuống.


Lợi Nhuận

Liệu đối tượng có kết nối với một phần sẽ giữ nó ở địa điểmtrí hay không.

Resize

Thay đổi kích thước của một đối tượng giống 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 cỡ.

Giá Trị Mặc Định: ""
deltaAmount: number

Bao nhiêu để phát triển/thu nhỏ trên phía được chỉ định.

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

Lợi Nhuận

Whether phần được thay đổi kích cỡ.

SetNetworkOwner

()

Đặt người chơi được cung cấp làm chủ mạng cho này và tất cả các bộ phận kết nối.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 phần.

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

Lợi Nhuận

()

SetNetworkOwnershipAuto

()

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


Lợi Nhuận

()

TorqueToAngularAcceleration

Tham Số

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

Lợi Nhuận

IntersectAsync

Sinh Lợi

Tạo một đối tượng mới IntersectOperation từ hình học giao nhau của phần và các phần khác trong danh sách được cho.Chỉ Parts được hỗ trợ, không Terrain hoặc MeshParts .Tương tự như Clone() , đối tượng trả về không có set Parent .

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

Trong so sánh hình ảnh tiếp theo, IntersectAsync() được gọi trên khối màu tím bằng cách sử dụng bảng chứa khối xanh.Kết quả IntersectOperation cuối cùng được giải quyết thành một hình dạng của hình học giao nhau của cả hai phần.

Two block parts overlapping

<figcaption>Phân tá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 ban đầu vẫn nguyên vẹn sau khi thực hiện thành công hoạt động giao nhau.Trong hầu hết các trường hợp, bạn nên Destroy() tất cả các bộ phận ban đầu và làm cha cho các bộ phận trả lại IntersectOperation ở cùng một nơi như bản gọi BasePart .
  • Mặc định, màu sắc khuôn mặt của sự kết hợp kết quả được lấy từ thuộc tính Color của các bộ phận gốc.Để thay đổi toàn bộ giao lộ thành một màu cụ thể, hãy đặt tính chất UsePartColor của nó thành true.
  • Nếu một hoạt động giao nhau sẽ dẫn đến một phần có nhiều 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 sự kết hợp.

Giá Trị Mặc Định: ""
collisionfidelity: Enum.CollisionFidelity

Giá trị Enum.CollisionFidelity cho kết quả IntersectOperation.

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

Giá trị Enum.RenderFidelity của kết quả PartOperation .

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

Lợi Nhuận

Kết quả IntersectOperation với tên mặc định Phối hợp .

SubtractAsync

Sinh Lợi

Tạo một đoạn mới UnionOperation từ phần, trừ định hình được chiếm bởi các phần trong mảng được cho.Chỉ Parts được hỗ trợ, không Terrain hoặc MeshParts .Tương tự như Clone() , đối tượng trả về không có set Parent .

Lưu ý rằng liên minh kết quả không thể trống do sự trừ đi. Nếu hoạt động sẽ dẫn đến hình học hoàn toàn trống rỗng, nó sẽ thất bại.

Trong so sánh hình ảnh tiếp theo, SubtractAsync() được gọi trên xi lanh xanh dùng một bảng chứa khối tím.Kết quả UnionOperation cuối cùng được giải quyết thành một hình dạng loại bỏ địa hình của khối khỏi địa hình của xi lanh.

Longer block overlapping a cylinder

<figcaption>Phân tá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 đối tượng tham gia vào sự trừ bớ.

Giá Trị Mặc Định: ""
collisionfidelity: Enum.CollisionFidelity

Giá trị Enum.CollisionFidelity cho kết quả UnionOperation.

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

Giá trị Enum.RenderFidelity của kết quả PartOperation .

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

Lợi Nhuận

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

Mẫu mã

This example demonstrates how to subtract part(s) from another BasePart to form a negated UnionOperation.

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 đoạn mới UnionOperation từ phần, cộng với hình học được chiếm bởi các phần trong mảng đã cho.Chỉ Parts được hỗ trợ, không Terrain hoặc MeshParts .Tương tự như Clone() , đối tượng trả về không có set Parent .

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

Trong so sánh hình ảnh tiếp theo, UnionAsync() được gọi trên khối xanh dùng một bảng chứa xi-lanh màu tím.Kết quả UnionOperation cuối cùng được giải quyết thành một hình dạng của địa hình kết hợp của cả hai phần.

Block and cylinder parts overlapping

<figcaption>Phân tá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 ban đầu vẫn nguyên vẹn sau khi thực hiện thành công hoạt động hợp nhất.Trong hầu hết các trường hợp, bạn nên Destroy() tất cả các bộ phận ban đầu và làm cha cho các bộ phận trả lại UnionOperation ở cùng một nơi như bản gọi BasePart .
  • Mặc định, liên minh kết quả tôn trọng thuộc tính Color của mỗi phần của nó.Để thay đổi toàn bộ liên minh thành một màu cụ thể, hãy đặt tính năng UsePartColor của nó thành true.
  • Nếu một hoạt động liên minh sẽ dẫn đến một phần có 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 minh với phần gọi.

Giá Trị Mặc Định: ""
collisionfidelity: Enum.CollisionFidelity

Giá trị Enum.CollisionFidelity cho kết quả UnionOperation.

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

Giá trị Enum.RenderFidelity của kết quả PartOperation .

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

Lợi Nhuận

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

Mẫu mã

This example demonstrates how to combine the geometry of one BasePart with the geometry of other part(s) to form a UnionOperation.

BasePart:UnionAsync()

local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- Perform union operation
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- If operation succeeds, position it at the same location and parent it to the workspace
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- Destroy original parts which remain intact after operation
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

Sự Kiện

TouchEnded

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

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

Tham Số

otherPart: BasePart

Mẫu mã

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

Touching Parts Count

local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("Touch started: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("Touch ended: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)

Touched

Sự kiện Chạm xảy ra khi một phần tiếp xúc với một phần khác.Ví ví dụ / trường hợp, nếu PhầnA va chạm với PhầnB , then PartA.Touched bắt lửa với PhầnB , và PartB.Touched bắt lửa với PhầnA .

Sự kiện này chỉ bắt lửa khi có sự di chuyển vật lý, vì vậy nó sẽ không bắt lửa nếu thuộc tính CFrame đã được thay đổi sao cho phần chồng lấp một phần khác.Điều này cũng có nghĩa là ít nhất một trong những phần liên quan phải không được Anchored tại thời điểm va chạm.

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

Tham Số

otherPart: BasePart

Phần kia còn lại đã tiếp xúc với phần được cho.


Mẫu mã

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

Touching Parts Count

local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("Touch started: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("Touch ended: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)

This code sample demonstrates how to connect the BasePart.Touched event of multiple parts in a Model to one function.

Model Touched

local model = script.Parent
local function onTouched(otherPart)
-- Ignore instances of the model coming in contact with itself
if otherPart:IsDescendantOf(model) then
return
end
print(model.Name .. " collided with " .. otherPart.Name)
end
for _, child in pairs(model:GetChildren()) do
if child:IsA("BasePart") then
child.Touched:Connect(onTouched)
end
end