BasePart

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Nicht durchsuchbar

BasePart ist eine abstrakte Basiskl

For information on how BaseParts are grouped into simulated rigid bodies, see Assemblies .

Es gibt viele verschiedene Objekte, die mit BasePart (einschließlich Terrain interagieren, einschließlich:

  • Mehrere BaseParts können innerhalb eines Model gruppiert werden und gleichzeitig mit PVInstance:PivotTo() bewegt werden. Siehe 1>Modelle1>.
  • Ein Decal gilt eine dehnte Bildtextur auf die Gesichter eines BasePart , während ein Texture eine pflasternde Bildtextur auf die Gesichter anwendet. Siehe 1> Texturen und Decals1> .
  • Ein SurfaceGui rendert GuiObjects auf der Gesicht einer Teil. Siehe In-Experience UI-Container.
  • Class.附|Accessories können zu einem BasePart hinzugefügt werden, um CFrames in der Beziehung auf das Teil zu spezifizieren. Dies wird oft von physischen 0> Class.Constraints0> -Objekten verwendet, wie in Attachments3> und
  • ParticleEmitter Objekte emittieren Partikel in gleichmäßigem Volumen der BasePart zu der sie zuordnen. Siehe Partikel-Emitter.
  • Leichte Objekte wie PointLight emittieren Licht aus der Mitte eines BasePart wie in Lichtquellen beschrieben.
  • Wenn mit einem Tool in der Beziehung und mit dem Namen Griff gegeben, kann ein BasePart von Zeichen gehalten werden. Siehe 1> In-Experience-Tools1>.

Zusammenfassung

Eigenschaften

  • Parallel lesen

    Bestimmt, ob ein Teil auf physikalische Weise unbewegbar ist.

  • Nicht repliziert
    Parallel lesen

    Die angelicale Geschwindigkeit der Montagemaschine.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Die Mitte der Masse der Montagemaschine im Platz.

  • Nicht repliziert
    Parallel lesen

    Die lineare Geschwindigkeit der Montagemaschine.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Die Gesamtmenge der Montagemaschine.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Eine Verweis auf den Wurzelteil der Konfiguration.

  • Bestimmt die Art der Oberfläche für die Rückseite eines Teils (+Z-Richtung).

  • Bestimmt die Art der Oberfläche für das Untergesicht eines Teils (-Y-Richtung).

  • Nicht repliziert
    Parallel lesen

    Bestimmt die Farbe eines Teils.

  • Parallel lesen

    Bestimmt die Position und Ausrichtung der BasePart in der Welt.

  • Parallel lesen

    Bestimmt, ob ein Teil mit anderen Teilen kollidieren kann.

  • Parallel lesen

    Bestimmt, ob das Teil während der räumlichen Anfrage-Operationen betrachtet wird.

  • Parallel lesen

    Bestimmt, ob Touched und TouchEnded Ereignisse auf der Teil abgefeuert werden.

  • Parallel lesen

    Bestimmt, ob ein Teil einen Schatten wirft oder nicht.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Weltposition, in der sich der Zentrum eines Teils befindet.

  • Nicht repliziert
    Parallel lesen

    Beschreibt die Name einer Gruppe.

  • Nicht repliziert
    Parallel lesen

    Bestimmt die Farbe eines Teils.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Zeigt die aktuellen physischen Eigenschaften des Teils an.

  • Bestimmt mehrere physikalische Eigenschaften eines Teils.

  • Parallel lesen

    Wird verwendet, um aerodynamische Kräfte auf Teile und Montagen zu aktivieren oder zu deaktivieren.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Das CFrame der physischen Extents von der BasePart .

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Die tatsächliche physische Größe des BasePart als von der Physik-Engine betrachtet.

  • Bestimmt die Art der Oberfläche für die Vorderseite eines Teils (-Z-Richtung).

  • Bestimmt die Art der Oberfläche für die linke Seite eines Teils (-X-Richtung).

  • Verborgen
    Nicht repliziert
    Parallel lesen

    Bestimmt einen Multiplikator für BasePart.Transparency, der nur für den lokalen Client sichtbar ist.

  • Parallel lesen

    Bestimmt, ob ein Teil in Studio auswählbar ist.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Masse der Teil, das Produkt seiner Dichte und Volumen.

  • Parallel lesen

    Bestimmt, ob der Teil zur Gesamtmenge oder zur Inaktivität seines Festen Körpers beiträgt.

  • Parallel lesen

    Bestimmt die Textur und die Standard- physischen Eigenschaften eines Teils.

  • Nicht repliziert
    Parallel lesen

    Der Name von MaterialVariant .

  • Verborgen
    Nicht repliziert
    Parallel lesen

    Beschreibt dieRotation der Teil in der Welt.

  • Parallel lesen

    Gibt den Versatz des Teils von seinem CFrame .

  • Verborgen
    Nicht repliziert
    Parallel lesen

    Beschreibt die Position der Teil in der Welt.

  • Verborgen
    Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Zeit seit dem letzten aufgezeichneten Physik-Update.

  • Parallel lesen

    Bestimmt, wie viel ein Teil den Himmelskasten widerspiegelt.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die kleinste Größenänderung, die durch die Größenanpassungsmethode erlaubt ist.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Gesichter, auf denen ein Teil skaliert werden kann.

  • Bestimmt die Art der Oberfläche für die rechte Seite eines Teils (+X-Richtung).

  • Parallel lesen

    Die Hauptregel bei der Bestimmung des Hauptteils einer Konfiguration.

  • Nicht repliziert
    Parallel lesen

    DieRotation der Teil in Grad für die drei Achsen.

  • Nicht repliziert
    Parallel lesen

    Bestimmt die Dimensionen eines Teils (Länge, Breite, Höhe).

  • Bestimmt die Oberflächenart für die obere Gesichtseite eines Teils (+ Y-Richtung).

  • Parallel lesen

    Bestimmt, wie viel ein Teil durch (den Umkehrwert der Teil-Opakez) gesehen werden kann.

Eigenschaften von PVInstance übernommen

Methoden

Methoden von PVInstance übernommen

Ereignisse

Eigenschaften

Anchored

Parallel lesen

Die verankerte Eigenschaft bestimmt, ob ein Teil auf physikalische Weise unbewegbar ist. Wenn es aktiviert ist, wird ein Teil niemals aufgrund der Schwerkraft, anderer Teilkollisionen, überlappende andere Teile oder jeder anderen physikalischen verwandten Ursachen positioniert. Ergebniswerden zwei verankerte Teile niemals das BasePart.Touched auf einander auslösen.

Ein verankertes Teil kann immer noch bewegt werden, indem seine CFrame oder Position geändert werden, und es kann immer noch eine nicht null AssemblyLinearVelocity und 1> Class.BasePart.AssemblyAngularVelocity|AssemblyLinearVelocity1> haben.

Schließlich, wenn ein unverankertes Teil mit einem verankerten Teil über ein Objekt wie ein Weld verbunden wird, wird es auch verankert. Wenn ein solches Zusammenbruch bricht, kann das Teil wieder von der Physik beeinträchtigt werden. Siehe Montagen für mehr Details.

Die Netzwerkbesitzung kann nicht auf verankerte Teile gesetzt werden. Wenn der Status eines Teils auf dem Server ändert, wird sich die Netzwerkbesitzung dieses Teils ändern.

Code-Beispiele

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

Nicht repliziert
Parallel lesen

Der Winkelgeschwindigkeitsvektor dieser Teile Montagemaschine. Es ist die Rate der Orientierung in Radians pro Sekunde.

Die Winkelgeschwindigkeit ist bei jedem Punkt der Montage gleich.

Die direkte Geschwindigkeit kann unrealistische Bewegungen führen. Die Verwendung von Torque oder AngularVelocity-Einschränkung ist bevorzugt, oder verwenden Sie BasePart:ApplyAngularImpulse(), wenn Sie sofortige Änderungen in der Geschwindigkeit möchten.

Wenn das Teil von einem Server besessen ist, muss diese Eigenschaft von einem Server Script (nicht von einem Class.LocalScript

AssemblyCenterOfMass

Schreibgeschützt
Nicht repliziert
Parallel lesen

Eine Position berechnet über die mass und position von allen Teilen in der Montagemaschine.

Wenn die Montagemaschine einen verankerten Teil hat, wird der Zentrum der Masse der Montagemaschine das Zentrum der Masse des Montagemaschinen sein und die Montagemaschine wird eine unendliche Masse haben.

Das Wissen um die Mitte der Masse kann der Montage helfen, die Stabilität zu erhalten. Eine Kraft, die auf die Mitte der Masse angewendet wird, verursacht keine linke Beschleunigung, nur lineare. Eine Montage mit einer niedrigen Mitte der Masse wird eine bessere Zeit haben, unter dem Effekt der Schwerkraft zu bleiben.

AssemblyLinearVelocity

Nicht repliziert
Parallel lesen

Der lineare GeschwindigkeitVector dieser Teilkonstruktion. Es ist die Rate der Positionänderung in der Position der Montagemaschine center of mass pro Sekunde.

Wenn Sie die Geschwindigkeit an einem Punkt außerhalb der Mitte der Montagemaschine wissen möchten, verwenden Sie BasePart:GetVelocityAtPosition().

Die Geschwindigkeit direkt einzustellen, kann zu unrealistischen Bewegungen führen. Wenn Sie ein VectorForce -KonSTRUMENT verwenden, oder verwenden Sie BasePart:ApplyImpulse(), wenn Sie sofortige Änderungen in der Geschwindigkeit möchten.

Wenn das Teil von einem Server besessen ist, muss diese Eigenschaft von einem Server Script (nicht von einem Class.LocalScript

AssemblyMass

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Summe der Masse aller parts in diesem Teil der Montagemaschine. Teile, die Massless und nicht die Montagemaschinen-Wurzel sind, werden nicht zur Montagemasse beitragen.

Wenn die Montagemaschine eine verankerte Teil hat, wird die Montagemaschine-Masse als unendlich betrachtet. Einschränkungen und andere physikalische Interaktionen zwischen nicht verankerten Montagemaschinen mit einem großen Unterschied in der Masse können Instabilitäten verursachen.

AssemblyRootPart

Schreibgeschützt
Nicht repliziert
Parallel lesen

Dieses Eigenschaft zeigt an, dass die BasePart automatisch ausgewählt wurde, um die Wurzel des Montages zu repräsentieren. Es ist die gleiche Teil, die zurückgegeben wird, wenn Entwickler GetRootPart() rufen.

Der Wurzelbereich kann geändert werden, indem der RootPriority der Teile in der Montagemaschine geändert wird.

Teile, die alle dieselbeAssemblyRootPart teilen, befinden sich in demselben Montage.

For more information on root parts, see Assemblies .

BackSurface

Parallel lesen

Die BackSurface-Eigenschaft bestimmt die Art der Oberfläche, die für die +Z-Richtung eines Teils verwendet wird. Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine gemeinsame Erfahrung zwischen ihnen erstellen. Wenn auf Motor gesetzt, bestimmt die BasePart.BackSurfaceInput , wie eine Motor-Joint funktionieren soll.

Die meisten Oberflächentypen rendern eine Textur auf der Teilseite, wenn der BasePart.Material auf Plastik eingestellt ist. Einige Oberflächentypen - Hinge, Motor und SteppingMotor - werden stattdessen eine 3D-Verzierung rendern. Wenn diese Eigenschaft in dem Eigenschaften-Fenster ausgewählt wird, wird sie im Spiel wie diejenige eines SurfaceSelection ausgewählt.

Code-Beispiele

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

Parallel lesen

Die BottomSurface-Eigenschaft bestimmt die Art der Oberfläche, die für die -Y-Richtung eines Teils verwendet wird. Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine gemeinsame zwischen ihnen erstellen. Wenn auf Motor gesetzt, bestimmt die BasePart.BottomSurfaceInput , wie eine Motor-Joint zwischen ihnen funktionieren soll.

Die meisten Oberflächentypen rendern eine Textur auf der Teilseite, wenn der BasePart.Material auf Plastik eingestellt ist. Einige Oberflächentypen - Hinge, Motor und SteppingMotor - werden stattdessen eine 3D-Verzierung rendern. Wenn diese Eigenschaft in dem Eigenschaften-Fenster ausgewählt wird, wird sie im Spiel wie diejenige eines SurfaceSelection ausgewählt.

Code-Beispiele

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

Nicht repliziert
Parallel lesen

Die Eigenschaft BrickColor bestimmt die Farbe eines Teils. Wenn der Teil eine BasePart.Material hat, bestimmt dies auch die verwendete Farbe, wenn die Texturrendert wird. Für mehr Kontrolle über die Farbe kann die Eigenschaft BasePart.Color verwendet werden (es ist eine Color3-Variante dieser Eigenschaften). Wenn Farbe festlegenist, verwendet diese Eigenschaft die nächste BrickColor.

Andere visuelle Eigenschaften eines Teils werden durch BasePart.Transparency und BasePart.Reflectance bestimmt.

Code-Beispiele

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

Parallel lesen

Die CFrame -Eigenschaft bestimmt sowohl die Position als auch die Ausrichtung des BasePart in der Welt. Sie fungiert als arbitrische Referenzposition auf der Geometrie, aber ExtentsCFrame repräsentiert das tatsächliche 2>Datatype.CFrame2> seiner physischen Mitte.

Wenn Sie CFrame auf einem Teil einstellen, werden andere verbundene Teile auch relativ zu dem Teil bewegt, aber es wird empfohlen, PVInstance:PivotTo() zu verwenden, um ein gesamtes Modell zu verschieben, z. B. wenn Sie einen Charakter eines Spieler:inteleportieren.

Anders als das Einstellen von BasePart.Position , wird das Einstellen von BasePart.CFrame immer das Teil zum genauen gegebenen CFrame bewegen; mit anderen Worten: 1> keine Überlapp-Kontrolle wird ausgeführt1> und der Physik-Solver wird versuchen, jede Überlapp zu be

Um Positionen in Bezug auf ein Teil의 CFrame zu verfolgen, kann ein Attachment nützlich sein.

Code-Beispiele

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

Parallel lesen

CanCollide bestimmt, ob ein Teil physisch mit anderen Teilen interagiert. Wenn es deaktiviert ist, können andere Teile durch die Ziegel unbeschadet passieren. Teile, die für Dekoration verwendet werden, haben normalerweise CanCollide deaktiviert, da sie nicht vom Physik-Engine betrachtet werden müssen.

Wenn ein Teil nicht BasePart.Anchored ist und CanCollide deaktiviert ist, kann es aus der Welt fallen, um schließlich durch Workspace.FallenPartsDestroyHeight zerstört zu werden.

Wenn CanCollide deaktiviert ist, können Teile immer noch das BasePart.Touched -Ereignis abfeuern (einschließlich der anderen Teile, die sie berühren). Sie können dies mit BasePart.CanTouch deaktivieren.

For more information on Collisions, see Kollisionen .

Code-Beispiele

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

Parallel lesen

CanQuery bestimmt, ob die parte während raumbezogene Anfrage操作en wie GetPartBoundsInBox oder Raycast betrachtet wird. CanCollide muss auch deaktiviert sein, wenn 1> CanQuery1> und 4> CanCollide4>

Jenseits dieser Eigenschaftenist es auch möglich, Teile auszuschließen, die Nachkommen einer bestimmten Liste von Teilen sind, indem ein OverlapParams oder ein RaycastParams -Objekt verwendet wird, wenn die räumlichen Anfrage-Funktionen aufgerufen werden.

CanTouch

Parallel lesen

Dieses Eigenschaft bestimmt, ob Class.BasePart.Touched|Tou

Beachten Sie, dass diese Kollisionslogik über die EigenschaftenWorkspace.TouchesUseCollisionGroups auf die Einhaltung von true eingestellt werden kann. Wenn 1> true1>, ignorieren Teile in nicht kollidierenden Gruppen sowohl Kollisionen 4> und4> Touch-Ereignisse, wodurch diese Eigenschaft unnötig ist.

Leistung

Es gibt einen kleinen Leistungsgewinn auf Teile, die sowohl CanTouch und CanCollide auf 8 gesetzt sind, da diese Teile niemals Berechnungen für Teilekollisionen benötigen. Sie können jedoch immer noch von

CastShadow

Parallel lesen

Bestimmt, ob ein Teil einen Schatten wirft oder nicht.

Beachten Sie, dass diese Funktion nicht für die Leistungssteigerung entwickelt ist. Es sollte nur auf Teilen deaktiviert werden, auf denen Sie die Schatten, die die Teil castet, verbergen möchten. Die Deaktivierung dieser Eigenschaft für ein bestimmtes Teil kann visuelle Artefakte auf den Schatten casten auf diesem Teil verursachen.

CenterOfMass

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Eigenschaft CenterOfMass beschreibt die lokale Position des Zentrums der Masse einer Teil. Wenn dies ein einzelnes Teil-Assembly ist, ist dies die AssemblyCenterOfMass -Umwandlung aus der Welt in die lokale. Auf einfachem Class.Part|Parts -Server ist der Zentrum der Masse immer (0,0,0). Es kann jedoch für Class

CollisionGroup

Nicht repliziert
Parallel lesen

Die CollisionGroup -Eigenschaft beschreibt den Namen der Kollisionsgruppe der Teil (maximal 100 Zeichen). Teile beginnen mit der Standardgruppe, deren Name "Default" ist. Dieser Wert kann nicht leer sein.

Obwohl diese Eigenschaft selbst nicht repliziert ist, repliziert der Engine die Werte intern durch ein anderes private Eigenschaft, um Rückwärtss兼ibilitätsprobleme zu beheben.

Code-Beispiele

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

Nicht repliziert
Parallel lesen

Die Farbe-Eigenschaft bestimmt die Farbe eines Teils. Wenn der Teil eine BasePart.Material hat, bestimmt dies auch die verwendete Farbe, wenn die Texturrendert wird. Wenn diese Eigenschaft festlegenist, verwendet BasePart.BrickColor die nächste BrickColor zum Farb3-Wert.

Andere visuelle Eigenschaften eines Teils werden durch BasePart.Transparency und BasePart.Reflectance bestimmt.

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die aktuellen physikalischen Eigenschaften der aktuellen physikalischen Eigenschaften der Teil. Sie können benutzerdefinierte Werte für die physikalischen Eigenschaften pro Teil, benutzerdefiniertes Material und überschreibenfestlegen. Die Engine priorisiert mehr granulare Definitionen, wenn sie die effektiven physikalischen Eigenschaften eines Teils bestimmen. Die Werte in der folgenden Liste sind in Ordnung von der höchsten bis der niedrigsten Priorität:

  • Benutzerdefinierte physische Eigenschaften des Teils
  • Benutzerdefinierte physische Eigenschaften des benutzerdefinierten Materials der Teil
  • Benutzerdefinierte physische Eigenschaften des Materials von der Materialplatte überschreiben
  • Standard- physische Eigenschaften des Materials des Teils

CustomPhysicalProperties

Parallel lesen

Mit "CustomPhysicalProperties" kannst du verschiedene physikalische Aspekte deines Part anpassen, wie seine Dichte, Friction und Elastizität.

Wenn aktiviert, ermöglicht dieses Eigenschaften konfigurieren dieser physischen Eigenschaften. Wenn deaktiviert, bestimmen diese physischen Eigenschaften das BasePart.Material der Teile. Die Seite für Enum.Material enthält eine Liste der verschiedenen Teilematerialien.

Code-Beispiele

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

Parallel lesen

Wenn wahr und wenn Workspace.FluidForces aktiviert ist, verursacht dies den Physik-Engine, auf dieser BasePart aerodynamische Kräfte zu berechnen.

ExtentsCFrame

Schreibgeschützt
Nicht repliziert
Parallel lesen

Das CFrame der physischen Extents der BasePart, die sein physisches Zentrum repräsentiert.

ExtentsSize

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die tatsächliche physische Größe des BasePart als von der PhysikEngine betrachtete, z. B. in Kollisionserkennung .

FrontSurface

Parallel lesen

Die FrontSurface-Eigenschaft bestimmt die Art der Oberfläche, die für die -Z-Richtung eines Teils verwendet wird. Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine gemeinsame Erfahrung zwischen ihnen erstellen. Wenn auf Motor gesetzt, bestimmt die BasePart.FrontSurfaceInput , wie eine Motor-Joint funktionieren soll.

Die meisten Oberflächenrendern eine Textur auf der Teilseite, wenn das BasePart.Material auf Plastik eingestellt ist. Einige Oberflächenrendern, einschließlich Hinge, Motor und SteppingMotor, rendern stattdessen eine 3D-Verzierung. Wenn diese Eigenschaft in dem Eigenschaften-Fenster ausgewählt wird, wird sie im Spiel wie diejenige eines SurfaceSelection ausgewählt.

Code-Beispiele

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

Parallel lesen

Die LeftSurface-Eigenschaft bestimmt die Art der Oberfläche, die für die -X-Richtung eines Teils verwendet wird. Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine gemeinsame Erfahrung zwischen ihnen erstellen. Wenn auf Motor gesetzt, bestimmt die BasePart.LeftSurfaceInput , wie eine Motor-Joint funktionieren soll.

Die meisten Oberflächenrendern eine Textur auf der Teilseite, wenn das BasePart.Material auf Plastik eingestellt ist. Einige Oberflächenrendern, einschließlich Hinge, Motor und SteppingMotor, rendern stattdessen eine 3D-Verzierung. Wenn diese Eigenschaft in dem Eigenschaften-Fenster ausgewählt wird, wird sie im Spiel wie diejenige eines SurfaceSelection ausgewählt.

Code-Beispiele

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

Verborgen
Nicht repliziert
Parallel lesen

Die LocalTransparencyModifier-Eigenschaft ist ein Multiplikator für BasePart.Transparency, das nur für den lokalen Client sichtbar ist. Sie wird nicht vom Client auf Server repliziert und ist nützlich, wenn ein Teil nicht für einen bestimmten Client gerendert werden sollte, z. B. wenn der Spieler den Charakter ihres Körpers nicht sieht, wenn er in den First-Person-Modus zoomt.

Dieses Eigenschaft modifiziert die Lichtbarkeit der lokalen Teil durch die folgende Formel, wobei die resultierenden Werte zwischen 0 und 1 eingeklemmt sind.


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>
TransparenzLokale Transparenz-ModifierServer-seitige TransparenzKunden-seitige Transparenz

Locked

Parallel lesen

Die Locked-Eigenschaft bestimmt, ob eine part (oder eine model in ihr enthalten ist) in Roblox Studio durch Klicken darauf ausgewählt werden kann. Diese Eigenschaft wird in der Regel für Teile innerhalb von Umgebungsmodellen aktiviert, die derzeit nicht bearbeitet werden. Roblox Studio hat ein Auswählen/Entsperren-Alle-

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Masse ist eine lesbare Eigenschaft, die die Produktmenge einer Teilemenge und -dichte beschreibt. Sie wird von der GetMass Funktion zurückgegeben.

  • Die Lautstärke eines Teils wird durch seine Size und seine Shape bestimmt, die je nach verwendetem Basisteil unterschiedlich ist, z. B. WedgePart.
  • Die Dichte eines Teils wird durch seine Material oder CustomPhysicalProperties bestimmt, wenn angegeben.

Massless

Parallel lesen

Wenn diese Eigenschaft aktiviert ist, trägt die BasePart nicht zu der Gesamtmenge oder der Inaktivität seiner Montagemaschine bei, solange sie an einer anderen Montagemaschine mit Masse verbunden ist.

Wenn das Teil seine eigene Wurzel ist, gemäß AssemblyRootPart, wird dies für dieses Teil ignoriert, und es wird immer noch Masse und Inertie zu seiner Montage beitragen, wie ein normales Teil. Teile, die masslos sind, sollten niemals eine Montagewurzelteil sein, wenn alle anderen Teile in der Montage nicht masslos sind.

Dies könnte für Dinge nützlich sein, wie optionale Zubehörteile auf Fahrzeugen, die Sie nicht möchten, dass die Handhabung des Autos beeinflussen, oder ein massives Rendernetz, das an ein einfaches Meshgeschweißt ist.

Siehe auch Assemblies, ein Artikel, der beschreibt, was Wurzelteile sind und wie man sie verwendet.

Parallel lesen

Die Material-Eigenschaft ermöglicht es einem Baumeister, die Textur und die Standard- physischen Eigenschaften eines Teils festzulegen (im Falle, dass BasePart.CustomPhysicalProperties nicht festgelegt ist). Das Standard-Plastik-Material hat eine sehr leichte Textur, und das SmoothPlastic-Material hat Allekeine Textur. Einige Materialtexturen wie DiamondPlate und Granite haben sehr sichtbare Texturen. Die Textur jedes Materials reflektiert Sonnen

Durch das Festlegen dieser Eigenschaft und das Aktivieren von BasePart.CustomPhysicalProperties wird die Standard- physische Eigenschaft eines Materials verwendet. Zum Instanzist DiamondPlate ein sehr dichtes Material, während Wood sehr leicht ist. Die Dichte eines Teils bestimmt, ob er in Geländewasser schwimmt.

Das Glas-Material ändert das Rendering-Verhalten bei mäßigen Grafik-Einstellungen. Es gilt ein wenig Reflexion (ähnlich wie BasePart.Reflectance ) und Perspektionsverzerrung. Der Effekt ist besonders auf kugelförmigen Teilen (Set Class.BasePart.Shape Ball) sichtbar. Semitransparente Objekte und Glasteile hinter Glas sind nicht sichtbar.

Code-Beispiele

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

Nicht repliziert
Parallel lesen

Das System sucht die MaterialVariant Instanz mit dem angegebenen MaterialVariant-Namen und BasePart.Material eingeben. Wenn es eine passende MaterialVariant-Instanz findet, verwendet es diese MaterialVariant-Instanz, um das Standardmaterial zu ersetzen. Standardmaterial kann das integrierte Material oder ein Override Material sein, der in MaterialService angegeben ist.

Orientation

Verborgen
Nicht repliziert
Parallel lesen

Die Ausrichtungseigenschaft beschreibt die Ausrichtung der Teil in Grad um die X, Y und Z-Achsen mit einem Vector3. Die Ausrichtungen werden in Y → X → Z orderiert. Dies unterscheidet sich von

Wenn Sie diese Eigenschaft auf irgendeine Welds oder Motor6Ds mit diesem Teil verbunden setzen, wird die entsprechende C0 oder 1> Class.JointInstance.C1|C11> Eigenschaft aktual

Weldschnitten werden auch vorübergehend deaktiviert und wieder aktiviert, während der Verschiebungswerkzeug.

Code-Beispiele

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

Parallel lesen

Diese Eigenschaft spezifiziert den Versatz des Teils von seinem CFrame, der dasselbe ist wie part:GetPivot() .

Dies ist praktisch, um den Pivot in einem lokalen Platzzu einer Position zu setzen, aber das Setzen eines Teils in einen Welt -Raum kann wie folgt durchgeführt werden:


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

Code-Beispiele

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

Verborgen
Nicht repliziert
Parallel lesen

Die Position-Eigenschaft beschreibt die Koordinaten eines part mit einem Vector3. Sie reflektiert die Position des Teils BasePart.CFrame , aber sie kann auch festlegenwerden.

Wenn Sie diese Eigenschaft auf irgendeine Welds oder Motor6Ds mit diesem Teil verbunden setzen, wird die entsprechende C0 oder 1> Class.JointInstance.C1|C11> Eigenschaft aktual

Weldschnitten werden auch vorübergehend deaktiviert und wieder aktiviert, während der Verschiebungswerkzeug.

ReceiveAge

Verborgen
Schreibgeschützt
Nicht repliziert
Parallel lesen

Dies gibt die Zeit in Sekunden zurück, seit der Physik der Teil auf dem lokalen Client (oder dem Server) aktualisiert wurde. Wird 0 zurückgegeben, wenn die Teil keine Physik hat (verankert)

Reflectance

Parallel lesen

Die Reflexions-Eigenschaft bestimmt, wie viel ein part den Himmelskasten reflektiert. Ein Wert von 0 zeigt an, Alledie partei nicht reflektierend ist, und ein Wert von 1 zeigt an, dass die partei vollständig reflektieren sollte.

Reflexion wird nicht von BasePart.Transparency beeinträchtigt, es sei denn, die Teil ist vollständig durchsichtig, in dem Fall wird keine Reflexion rend染。Reflexion kann oder nicht ignoriert werden, abhängig von der BasePart.Material der Teil.

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Eigenschaft ResizeIncrement ist eine읽기-only-Eigenschaft, die die kleinste Größenänderung, die mit der BasePart:Resize() Methode erlaubt ist, beschreibt. Sie unterscheidet sich zwischen der Umsetzung der BasePart-Abstraktklasse. Zum Instanzhat Class.

Code-Beispiele

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Eigenschaft ResizeableFaces (mit einem e , nicht ResizableFaces) beschreibt die Verwendung eines Gesichtsobjekts, auf das ein Teil skaliert werden kann. Für die meisten implementierungen von

Code-Beispiele

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

Parallel lesen

Die RightSurface-Eigenschaft bestimmt die Art der Oberfläche, die für die +X-Richtung eines Teils verwendet wird. Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine gemeinsame Erfahrung zwischen ihnen erstellen. Wenn auf Motor gesetzt, bestimmt die BasePart.RightSurfaceInput , wie eine Motor-Joint funktionieren soll.

Die meisten Oberflächentypen rendern eine Textur auf der Teilseite, wenn der BasePart.Material auf Plastik eingestellt ist. Einige Oberflächentypen, einschließlich Hinge, Motor und SteppingMotor, rendern stattdessen eine 3D-Verzierung. Wenn diese Eigenschaft in dem Eigenschaften-Fenster ausgewählt wird, wird sie im Spiel wie das eines SurfaceSelection angezeigt.

Code-Beispiele

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

Parallel lesen

Diese Eigenschaft ist ein ganzer Zahl zwischen -127 und 127, der die Vorrangregel für die Wurzel-Teil-Sortierung über alle anderen Regeln für die Wurzel-Teil-Sortierung übersteht. Wenn Sie mehrere Teile betrachten, die nicht Anchored sind und den gleichen Class.BasePart.Massless|Massless

Sie können diese Eigenschaft verwenden, um zu steuern, welcher Teil einer Montagemaschine die Wurzel ist, und die Wurzel bei der Größenänderung stabil zu halten.

Siehe auch Assemblies, ein Artikel, der beschreibt, was Wurzelteile sind und wie man sie verwendet.

Rotation

Nicht repliziert
Parallel lesen

DieRotation der Teil in Grad für die drei Achsen.

Wenn Sie diese Eigenschaft auf irgendeine Welds oder Motor6Ds mit diesem Teil verbunden setzen, wird die entsprechende C0 oder 1> Class.JointInstance.C1|C11> Eigenschaft aktual

Weldschnitten werden auch vorübergehend deaktiviert und wieder aktiviert, während der Verschiebungswerkzeug.

Nicht repliziert
Parallel lesen

Die Eigenschaft Size eines Teils bestimmt seine visuellen Dimensionen, während ExtentsSize die tatsächliche Größe, die von der Physik-Engine verwendet wird, repr

Die Größe des Teils bestimmt seine Masse, die durch BasePart:GetMass() gegeben wird. Ein Teil's Size wird von einer Vielzahl anderer Objekte verwendet:

  • ParticleEmitter um den Bereich zu bestimmen, aus dem Partikel spawnen.
  • BlockMesh, um das gerendelte rechteckige Prisma teilweise zu bestimmen.
  • SpecialMesh für bestimmte MeshTypes, um die Größe des gerenderten Netzwerks zu bestimmen.
  • SurfaceLight um den Bereich zu beleuchten.

Code-Beispiele

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

Die TopSurface-Eigenschaft bestimmt die Art der Oberfläche, die für die +Y-Richtung eines Teils verwendet wird. Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine gemeinsame Erfahrung zwischen ihnen erstellen. Wenn auf Motor gesetzt, bestimmt die BasePart.TopSurfaceInput , wie eine Motor-Joint funktionieren soll.

Die meisten Oberflächentypen rendern eine Textur auf der Teilseite, wenn der BasePart.Material auf Plastik eingestellt ist. Einige Oberflächentypen - Hinge, Motor und SteppingMotor - werden stattdessen eine 3D-Verzierung rendern. Wenn diese Eigenschaft in dem Eigenschaften-Fenster ausgewählt wird, wird sie im Spiel wie diejenige eines SurfaceSelection ausgewählt.

Code-Beispiele

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

Parallel lesen

Die Transparenz-Eigenschaft kontrolliert die Sichtbarkeit eines Teils auf einer Skala von 0 zu 1, bei der 0 vollständig sichtbar (opake) ist, und ein Wert von 1 vollständig unsichtbar (nicht gerendert).

BasePart.Reflectance kann die Gesamtwohn透明ität eines Ziegelns reduzieren, wenn er auf einen Wert in der Nähe von 1 eingestellt ist.

Während vollständig durchsichtige Teile nicht gerendert werden, haben teilweise transparente Objekte einige wichtige Render-Kosten. Wenn Sie viele transparente Teile haben, kann dies das Spiel verlangsamen.

Wenn transparente Teile überlappen, kann die Rendering-Ordnung unvorhersehbar sein - versuchen Sie, halbtransparente Teile von überlappenden zu vermeiden.

Der BasePart.LocalTransparencyModifier ist ein Multiplikator für Transparenz, der nur für den lokalen Client sichtbar ist.

Code-Beispiele

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)

Methoden

AngularAccelerationToTorque

Parameter

angAcceleration: Vector3
angVelocity: Vector3
Standardwert: "0, 0, 0"

Rückgaben

ApplyAngularImpulse

void

Applys einen sofortigen Winkelkraft-Boost für das Montieren dieses Teils, wodurch das Montieren gedreht wird.

Die daraus resultierende angelicale Geschwindigkeit basiert auf der Montagemaschine mass. So ist ein höherer Impuls erforderlich, um größere Assemblies zu bewegen. Impulse sind nützlich für Fälle, in denen Sie eine sofortige Kraft anwenden möchten, z. B. eine Explosion oder einen Zusammenstoß.

Wenn das Teil von einem Server besessen ist, muss diese Funktion von einem Server Script (nicht von einem Class.LocalScript

Parameter

impulse: Vector3

Ein Kraftvektor, der auf die Montagemaschine als Impuls angewendet wird.


Rückgaben

void

ApplyImpulse

void

Diese Funktion gilt für einen sofortigen Kraftimpuls für die Montage dieses Teils.

Die Kraft wird an der Montagemaschine angewendet, center of mass, so dass der resultierende Bewegung nur linear ist.

Die daraus resultierende Geschwindigkeit basiert auf der Montagemaschine mass. Ein höherer Impuls ist erforderlich, um größere Assemblies zu bewegen. Impulse sind nützlich für Fälle, in denen Sie eine sofortige Kraft anwenden möchten, z. B. eine Explosion oder einen Zusammenstoß.

Wenn das Teil von einem Server besessen ist, muss diese Funktion von einem Server Script (nicht von einem Class.LocalScript

Parameter

impulse: Vector3

Ein Kraftvektor, der auf die Montagemaschine als Impuls angewendet wird.


Rückgaben

void

ApplyImpulseAtPosition

void

Diese Funktion gilt für einen sofortigen Kraftimpuls für die Montage dieses Teils im Platzan der angegebenen Position.

Wenn die Position nicht in der Montagemaschine center of mass ist, verursacht der Impuls eine positoriale und drehende Bewegung.

Die daraus resultierende Geschwindigkeit basiert auf der Montagemaschine mass. Ein höherer Impuls ist erforderlich, um größere Assemblies zu bewegen. Impulse sind nützlich für Fälle, in denen Entwickler eine sofortige Kraft anwenden möchten, z. B. eine Explosion oder einen Zusammenstoß.

Wenn das Teil von einem Server besessen ist, muss diese Funktion von einem Server Script (nicht von einem Class.LocalScript

Parameter

impulse: Vector3

Ein Kraftvektor, der auf die Montagemaschine als Impuls angewendet wird.

position: Vector3

Die Position, im Platz, um den Impuls anzuwenden.


Rückgaben

void

CanCollideWith

Parallel schreiben

Gibt zurück, ob die Teile miteinander kollidieren können oder nicht. Diese Funktion berücksichtigt die Kollisionsgruppen der beiden Teile. Diese Funktion wird einen Fehler zurückgeben, wenn die angegebene Teil nicht eine BasePart ist.

Parameter

part: BasePart

Der angegebene Teil wird auf Kollisionsfähigkeit überprüft.


Rückgaben

Ob die Teile miteinander kollidieren können.

CanSetNetworkOwnership

Die Funktion CanSetNetworkOwnership prüft, ob Sie die Netzwerkbesitzung eines Teils verwalten können.

Der Rückgabewert der Funktion überprüft, ob Sie BasePart:SetNetworkOwner() oder BasePart:SetNetworkOwnershipAuto() aufrufen können, ohne einen Fehler zu begegnen. Es gibt die Rückgabe wahr, wenn Sie das Netzwerkbesitz ändern/lesen können, oder gibt die Rückgabe falsch und der Grund, warum Sie es nicht, als Stringzurück.


Rückgaben

Ob du die Netzwerkbesitz und den Grund ändern kannst oder nicht.

Code-Beispiele

Check if a Part's Network Ownership Can Be Set

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

GetClosestPointOnSurface

Parameter

position: Vector3

Rückgaben

GetConnectedParts

Instances
Parallel schreiben

Gibt eine Tabelle von Teilen zurück, die mit dem Objekt durch eine beliebige Art von Verbindungverbunden sind.

Wenn recursive wahr ist, wird diese Funktion alle Teile in der Montage in der Basis fest verbunden zurückgeben.

Starre Gelenke

Wenn ein Zug zwei Teile miteinander verbindet, (Part0 → Part1), ist ein Zug (Part1if die Physik von Part1 vollständig von 2> (Part0)2> eingesperrt ist. Dies gilt nur für die folgenden Zugtypen:

Parameter

recursive: bool

Eine Tabelle von Teilen, die mit dem Objekt durch eine beliebige Art von joint verbunden sind.

Standardwert: false

Rückgaben

Instances

GetJoints

Instances
Parallel schreiben

Kehre alle Joints oder Einschränkungen zurück, die mit dieser Teil verbunden sind.


Rückgaben

Instances

Ein Array von allen Joints oder Beschränkungen, die mit dem Teil verbunden sind.

GetMass

Parallel schreiben

GetMass gibt den Wert der Mass Eigenschaftenzurück.

Diese Funktion ist der Eigenschaftenvoraus. Sie wird für die Rückwärtsskompatibilität unterstützt; Sie sollten die Masse-Eigenschaft direkt verwenden.


Rückgaben

Die Masse des Teils.

Code-Beispiele

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

Parallel schreiben

Gibt den aktuellen Spieler zurück, der der Netzwerk-Eigentümer dieses Teils ist, oder null in Falle des Servers.


Rückgaben

Der aktuelle Spieler, der Besitzer der Netzwerk dieses Teils, oder null in Falle des Servers.

GetNetworkOwnershipAuto

Parallel schreiben

Kehrt wahr zurück, wenn die Spielmaschine die Netzwerkbesitzer automatisch für diesen Teil festgelegt hat.


Rückgaben

Ob der SpielEngine automatisch den Netzwerk-Besitzer für diesen Teil entscheidet.

GetNoCollisionConstraints

Instances

Rückgaben

Instances

GetRootPart

Parallel schreiben

Gibt die grundlegende Teil einer Montagemaschine zurück. Wenn Sie eine Montagemaschine mit einem CFrame beweegen, ist es wichtig, diesen grundlegenden Teil zu bewegen (dies wird alle anderen Teile, die an ihm verbunden sind, entsprechend bewegen). Weitere Informationen finden Sie im Artikel Montagemaschinen.

Diese Funktion ist vor der AssemblyRootPart Eigenschaftendatiert. Sie wird für die Rückwärtsskompatibilität unterstützt, aber Sie sollten AssemblyRootPart direkt verwenden.


Rückgaben

Die grundlegende Teil einer Montagemaschine (eine Sammlung von Teilen, die miteinander verbunden sind).

GetTouchingParts

Instances

Gibt eine Tabelle zurück, in der alle Teile, die physisch mit dieser Teil interagieren, beschrieben sind. Wenn die Teil selbst CanCollide auf falsch gesetzt ist, dann gibt diese Funktion eine leere Tabelle zurück


Rückgaben

Instances

Eine Tabelle aller Teile, die mit dieser Teil interagieren und kollidieren kann.

GetVelocityAtPosition

Parallel schreiben

Gibt die lineare Geschwindigkeit der Montagemaschine der angegebenen Position im Verhältnis zu dieser Maschine zurück. Es kann verwendet werden, um die lineare Geschwindigkeit der Teile in einer Montagemaschine außer der Wurzelmaschine zu identifizieren. Wenn die Montagemaschine keine angulare Geschwindigkeit hat, dann ist die lineare Geschwindigkeit immer die gleiche für jede Position.

Parameter

position: Vector3

Rückgaben

IsGrounded

Parallel schreiben

Gibt zurück, wenn das Objekt mit einem Teil verbunden ist, das es an Ort und Stelle halten wird (z. B. mit einem Anchored Teil), sonst gibt es zurück. In einer Montage, die ein Anchored Teil hat, ist jedes andere Teil auf dem Boden.


Rückgaben

Ob das Objekt mit einem Teil verbunden ist, das es an Ort halten wird.

Resize

Ändert die Größe eines Objekts genau wie mit dem Tool.

Parameter

normalId: Enum.NormalId

Die Seite zum Größe anpassen.

deltaAmount: number

Wie viel auf der angegebenen Seite zu wachsen/rückgängig zu machen ist.


Rückgaben

Ob das Teil skaliert wird.

SetNetworkOwner

void

Setzt den angegebenen Spieler als Netzwerkbesitzer für dies und alle verbundenen Teile. Wenn playerInstance null ist, wird der Server der Besitzer sein, anstatt ein Spieler:in.

Parameter

playerInstance: Player

Der Spieler erhält die Netzwerkbesitz der Teil.

Standardwert: "nil"

Rückgaben

void

SetNetworkOwnershipAuto

void

Lässt die SpielEngine dynamisch entscheiden, wer die Physik der Teile (eines der Clients oder des Servers) verantwortet.


Rückgaben

void

TorqueToAngularAcceleration

Parameter

torque: Vector3
angVelocity: Vector3
Standardwert: "0, 0, 0"

Rückgaben

IntersectAsync

Angehalten

Erstellt ein neues IntersectOperation von der intersecting Geometry des Teils und der anderen Teile in der angegebenen Array. Nur Parts werden unterstützt, nicht Terrain oder 1> Class.MeshPart|MeshParts1>.

Die folgenden Eigenschaften der aufrufenden Teil werden auf das resultierende IntersectOperation angewendet:

Im folgenden Bildvergleich wird IntersectAsync() auf den lila Block aufgerufen, der mit einer Tabelle, die den blauen Blöckeenthält, auf eine Form der interessierenden Geometrie der beiden Teile resolviert.

Two block parts overlapping

<figcaption>Separate Teile</figcaption>
Parts intersected into a new solid model

<figcaption>Ergebende <code>Class.IntersectOperation</code></figcaption>

Notizen

  • Die ursprünglichen Teile bleiben nach einem erfolgreichen Intersect-Operation intakt. In den meisten Fällen solltest du alle ursprünglichen Teile und das zurückgegebene Destroy() an den gleichen Ort wie die aufrufende IntersectOperation .
  • Standardmäßig sind die Gesichtsfarben der resultierenden Interaktion auf die Eigenschaft Color der ursprünglichen Teile übernommen. Um die gesamte Interaktion in eine bestimmte Farbe zu ändern, setzen Sie seine UsePartColor Eigenschaft auf true.
  • Wenn eine Intersektion mit mehr als 20.000 Dreieck ergäbe, wird sie auf 20.000 Dreieck einfacht.

Parameter

parts: Instances

Die Objekte, die an der Intersektion teilnehmen.

collisionfidelity: Enum.CollisionFidelity

Der Enum.CollisionFidelity -Wert für die resultierende IntersectOperation .

Standardwert: "Default"
renderFidelity: Enum.RenderFidelity

Der Enum.RenderFidelity -Wert des resultierenden PartOperation .

Standardwert: "Automatic"

Rückgaben

Ergebnis IntersectOperation mit Standardname Intersect .

SubtractAsync

Angehalten

Erstellt ein neues UnionOperation von der Teil, minus die Geometrie, die von den Teilen in der angegebenen Arraybesetzt ist. Nur Parts werden unterstützt, nicht Class.Terrain oder 1> Class.MeshPart|MeshParts1>. Ähn

Beachten Sie, dass die resultierende Union aufgrund von Subtraktionen leer sein kann. Wenn die Operation eine vollständig leere Geometrie ergibt, wird sie fehlgeschlagen.

Im folgenden Bildvergleich wird SubtractAsync() auf den blauen Zylinder aufgerufen, der eine Tabelle enthält, die die lila Blöckeenthält. Das resultierende UnionOperation löst sich in eine Form, die die Geometrie des Blöckevon derjenigen des Zylinders enthält.

Longer block overlapping a cylinder

<figcaption>Separate Teile</figcaption>
Block part subtracted from cylinder

<figcaption>Ergebende <code>Class.UnionOperation</code></figcaption>

Parameter

parts: Instances

Die Objekte, die an der Subtraktion teilnehmen.

collisionfidelity: Enum.CollisionFidelity

Der Enum.CollisionFidelity -Wert für die resultierende UnionOperation .

Standardwert: "Default"
renderFidelity: Enum.RenderFidelity

Der Enum.RenderFidelity -Wert des resultierenden PartOperation .

Standardwert: "Automatic"

Rückgaben

Ergebnis UnionOperation mit Standardname Union .

Code-Beispiele

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

Angehalten

Erstellt eine neue UnionOperation von der Teil, plus die Geometrie, die von den Teilen in der angegebenen Arraybelegt ist. Nur Parts sind unterstützt, nicht Class.Terrain oder 1> Class.MeshPart|MeshParts1>. Ähnlich wie <

Die folgenden Eigenschaften der aufrufenden Teil werden auf das resultierende UnionOperation angewendet:

Im folgenden Bildvergleich wird UnionAsync() auf den blauen Block aufgerufen, der mit einer Tabelle, die den lila Zylinder enthält, auf eine Form der kombinierten Geometrie beider Teile resolviert.

Block and cylinder parts overlapping

<figcaption>Separate Teile</figcaption>
Parts joined together into a single solid union

<figcaption>Ergebende <code>Class.UnionOperation</code></figcaption>

Notizen

  • Die ursprünglichen Teile bleiben nach einer erfolgreichen Union-Operation intakt. In den meisten Fällen solltest du alle ursprünglichen Teile und das zurückgegebene Destroy() an den gleichen Ort wie die aufrufende UnionOperation .
  • Standardmäßig respektiert die resultierende Union die Eigenschaft Color jeder deiner Teile. Um die gesamte Union in eine bestimmte Farbe zu ändern, setze seine Class.PartOperation.UsePartColor|UsePartColor -Eigenschaft auf true .
  • Wenn eine Unionsberechnung zu einem Teil mit mehr als 20.000 Dreieck ergäbe, wird es auf 20.000 Dreieck einfacht.

Parameter

parts: Instances

Die Objekte, die an der Union mit dem aufrufenden Teil teilnehmen.

collisionfidelity: Enum.CollisionFidelity

Der Enum.CollisionFidelity -Wert für die resultierende UnionOperation .

Standardwert: "Default"
renderFidelity: Enum.RenderFidelity

Der Enum.RenderFidelity -Wert des resultierenden PartOperation .

Standardwert: "Automatic"

Rückgaben

Ergebnis UnionOperation mit Standardname Union .

Code-Beispiele

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

Ereignisse

TouchEnded

Feuert ab, wenn ein Teil unter ähnlichen Bedingungen wie BasePart.Touched berührt wird.

Dieses Ereignis funktioniert in Zusammenarbeit mit Workspace.TouchesUseCollisionGroups, um anzugeben, ob Zusammenarbeitsgruppen anerkannt sind für die Erkennung.

Parameter

otherPart: BasePart

Code-Beispiele

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

Das Berührte -Ereignis wird ausgelöst, wenn ein Teil mit einem anderen Teil in Berührung kommt. Zum Instanz, wenn TeilA auf TeilB stößt, dann 1> Class.BasePart.Touched|PartA.Touched1> mit 4> TeilB

Dieses Ereignis wird nur als Ergebnis von physischen Bewegungen ausgelöst, so dass es nicht ausgelöst wird, wenn die CFrame Eigenschaft geändert wird, sodass die Teil überlappende ein anderes Teil. Dies bedeutet auch, dass mindestens einer der beteiligten Teile nicht Class.BasePart.Anchored|Anchored 2>im Zeitpunkt der Kollision</

Dieses Ereignis funktioniert in Zusammenarbeit mit Workspace.TouchesUseCollisionGroups, um anzugeben, ob Zusammenarbeitsgruppen anerkannt sind für die Erkennung.

Parameter

otherPart: BasePart

Der andere Teil, der mit dem gegebenen Teil in Kontakt stand.


Code-Beispiele

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