BasePart
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
BasePart ist eine abstrakte Basisklasse für Objekte in der Welt, die gerendert und physisch simuliert werden, während sie sich im Workspace befinden.Es gibt mehrere Implementierungen von BasePart, die häufigste ist Part und MeshPart.Andere enthalten WedgePart , SpawnLocation , und das Singleton Terrain -Objekt.Im Allgemeinen, wenn die Dokumentation sich auf ein "Teil" bezieht, werden die meisten BasePart Implementierungen funktionieren und nicht nur Part .
Für Informationen darüber, wie BaseParts in simulierte starre Körper gruppiert werden, siehe Versammlungen.
Es gibt viele verschiedene Objekte, die mit BasePart (anders als Terrain) interagieren, einschließlich:
- Mehrere BaseParts können innerhalb eines Model gruppiert und gleichzeitig mit PVInstance:PivotTo() verschoben werden. Siehe Modelle .
- Ein Decal wendet eine gedehnte Bildtextur auf die Gesichter eines BasePart an, während ein Texture eine kachelierte Bildtextur auf die Gesichter anwendet.Siehe Texturen und Bilder.
- Attachments kann zu einem BasePart hinzugefügt werden, um CFrames im Verhältnis zum Teil zu spezifizieren.Diese werden oft von physischen Constraint Objekten verwendet, wie in mechanischen Einschränkungen und Bewegungseinschränkungen beschrieben.
- ParticleEmitter Objekte emittieren Partikel gleichmäßig in der Volumen des BasePart , zu dem sie angehören. Siehe Partikel-Emitter .
- Leichte Objekte wie PointLight senden Licht aus dem Zentrum eines BasePart wie in Lichtquellen dargestellt.
- Wenn auf ein Tool und der Name Handle übergeben wird, kann ein BasePart von Charakteren gehalten werden. Siehe In-Experience-Tools .
Zusammenfassung
Eigenschaften
Bestimmt, ob ein Teil durch die Physik unbewegbar ist.
Die anguläre Geschwindigkeit der Montagemaschine des Teils.
Das Zentrum der Masse der Montagemaschine des Teils im Platz.
Die lineare Geschwindigkeit der Montagemaschine des Teils.
Die Gesamtmenge der Montagemaske des Teils.
Eine Referenz auf den Wurzelteil der Montagemaschine.
Bestimmt, ob das Teil physisch mit der Audio-Simulation interagieren wird, ähnlich wie CastShadow für Beleuchtung.
Bestimmt die Art der Oberfläche für die Rückseite eines Teils.
Bestimmt die Art der Oberfläche für das untere Gesicht eines Teils.
Bestimmt die Farbe eines Teils.
Bestimmt die Position und Ausrichtung des BasePart in der Welt.
Bestimmt, ob ein Teil mit anderen Teilen kollidieren kann.
Bestimmt, ob das Teil während räumlicher Abfrageoperationen berücksichtigt wird.
Bestimmt, ob Touched und TouchEnded Ereignisse auf der Seite abgefeuert werden.
Bestimmt, ob ein Teil einen Schatten wirft oder nicht.
Beschreibt die Weltposition, in der sich das Zentrum der Masse eines Teils befindet.
Beschreibt den Namen der Gruppeeines Teils.
Bestimmt die Farbe eines Teils.
Zeigt die aktuellen physischen Eigenschaften des Teils an.
Bestimmt mehrere physische Eigenschaften eines Teils.
Wird verwendet, um aerodynamische Kräfte auf Teilen und Montagemaschinen zu aktivieren oder zu deaktivieren.
Die tatsächliche physische Größe des BasePart als von der Physik-Engine betrachtet.
Bestimmt die Art der Oberfläche für das Vordergesicht eines Teils.
Bestimmt die Art der Oberfläche für das linke Gesicht eines Teils.
Legt einen Multiplikator für BasePart.Transparency fest, der nur für den lokalen Client sichtbar ist.
Bestimmt, ob ein Teil in Studio auswählbar ist.
Beschreibt die Masse des Teils, das Produkt seiner Dichte und Größe.
Bestimmt, ob das Teil zur Gesamtmenge oder zur Inertie seines steifen Körpers beiträgt.
Bestimmt die Textur und die Standardphysikalischen Eigenschaften eines Teils.
Der Name von MaterialVariant.
Beschreibt die Rotation des Teils in der Welt.
Gibt den Versatz des Drehpunkts des Teils von seinem CFrame an.
Beschreibt die Position des Teils in der Welt.
Zeit seit dem letzten aufgezeichneten Physik-Update.
Bestimmt, wie viel ein Teil die Skybox widerspiegelt.
Beschreibt die kleinste Änderung in der Größe, die von der Resize()-Methode zulässig ist.
Beschreibt die Gesichter, auf denen ein Teil skaliert werden kann.
Bestimmt die Art der Oberfläche für die richtige Seite eines Teils.
Die Hauptregel bei der Bestimmung des Wurzelteils einer Montagemaschine.
Die Rotation des Teils in Grad für die drei Achsen.
Bestimmt die Dimensionen eines Teils (Länge, Breite, Höhe).
Bestimmt die Art der Oberfläche für die Vorderseite eines Teils.
Bestimmt, wie viel ein Teil durchgesehen werden kann (das Gegenteil der Part-Opazität).
Methoden
Wenden Sie einen angulären Impuls auf die Montagemaschine an.
Wenden Sie einen Impuls auf die Montagemaschine im Montagemodus center of mass an.
Wenden Sie einen Impuls auf die Montagemaschine an an der angegebenen Position.
Gibt zurück, ob die Teile miteinander kollidieren können.
Überprüft, ob Sie das Netzwerkbesitz eines Teils festlegen können.
Gibt eine Tabelle von Teilen zurück, die mit dem Objekt durch eine starre Verbindung verbunden sind.
Gib alle Gelenke oder Einschränkungen zurück, die mit diesem Teil verbunden sind.
Gibt den Wert der Mass Eigenschaftenzurück.
Gibt den aktuellen Spieler zurück, der der Netzwerkbesitzer dieses Teils ist, oder nil im Falle des Servers.
Gibt wahr zurück, wenn die SpielEngine das Netzwerkbesitzer automatisch für diesen Teil entscheidet.
Gibt das Basisteil einer Montagemaschine von Teilen zurück.
Gibt eine Tabelle aller BasePart.CanCollide Teile zurück, die sich mit diesem Teil überlappen.
Gibt die lineare Geschwindigkeit der Montagemaschine des Teils an der angegebenen Position in Bezug auf dieses Teil zurück.
Gibt wahr zurück, wenn das Objekt mit einem Teil verbunden ist, das es an einer Stelle hält (z. B. ein Anchored Teil), sonst gibt es false zurück.
Ändert die Größe eines Objekts genau wie mit dem Tool.
Setzt den angegebenen Spieler als Netzwerkbesitzer für dieses und alle verbundenen Teile.
Lässt die SpielEngine dynamisch entscheiden, wer die Physik des Teils handhabt (einer der Clients oder der Server).
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Erstellt eine neue IntersectOperation aus der überlappenden Geometrie des Teils und der anderen Teile in dem angegebenen Array.
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Erstellt ein neues UnionOperation vom Teil, minus die Geometrie, die von den Teilen im angegebenen Array besetzt wird.
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Erstellt ein neues UnionOperation vom Teil plus die Geometrie, die von den Teilen im angegebenen Array besetzt wird.
Holt den Pivot eines PVInstance .
Verwandelt die PVInstance zusammen mit all ihren Nachkommen PVInstances, so dass der Pivot jetzt an der angegebenen CFrame position ist.
Ereignisse
Feuert, wenn ein Teil aufgrund einer physischen Bewegung aufhört, ein anderes Teil zu berühren.
Feuert, wenn ein Teil aufgrund einer physischen Bewegung einen anderen Teil berührt.
Eigenschaften
Anchored
Die Eigenschaft Anchored bestimmt, ob das Teil durch Physik unbewegbar ist.Wenn aktiviert, ändert ein Teil niemals seine Position aufgrund der Gravitation, anderer Teilkollisionen, der Überlappung anderer Teile oder anderer physikbezogener Ursachen.Als Ergebnis werden zwei angekerte Teile nie das Ereignis Touched aufeinander abfeuern.
Ein angekerter Teil kann immer noch durch Ändern seiner CFrame oder Position verschoben werden, und er kann immer noch einen nicht Null AssemblyLinearVelocity und AssemblyAngularVelocity haben.
Schließlich, wenn ein unverankertes Teil mit einem verankerten Teil durch ein Objekt wie eine Weld verbunden wird, wird es auch verankert agieren.Wenn sich ein solcher Gelenkbruch ereignet, kann das Teil wieder von der Physik beeinflusst werden.Siehe Zusammenstellungen für weitere Details.
Die Netzwerkbesitz kann nicht auf verankerten Teilen festgelegt werden.Wenn sich der Ankerstatus eines Teils auf dem Server ändert, wird die Netzwerkbesitzschaft dieses Teils beeinträchtigt.
Code-Beispiele
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).
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
Der angleiche Geschwindigkeitsvektor der Montagemaschine dieses Teils. Es ist die Geschwindigkeit der Änderung der Orientierung in Rad pro Sekunde.
Die Angriffsgeschwindigkeit ist an jedem Punkt der Montagemaschine gleich.
Die direkte Festlegung der Geschwindigkeit kann zu unrealistischen Bewegungen führen.Die Verwendung von Torque oder AngularVelocity Einschränkung wird bevorzugt, oder verwende ApplyAngularImpulse(), wenn du sofortige Änderung der Geschwindigkeit möchtest.
Wenn das Teil im Besitz des Servers ist, muss diese Eigenschaft von einem Server Script (nicht von einem LocalScript oder einem Script mit RunContext auf Enum.RunContext.Client festgelegt).Wenn das Teil durch automatisches Eigentum eines Clients im Besitz ist, kann diese Eigenschaft von einem Client-Skript oder einem Skript, das. PL: die Skriptsgeändert werden; eine Änderung von einem Client-Skript für ein serverseitiges Teil wird keine Auswirkung haben.
AssemblyCenterOfMass
Eine Position, die durch die Mass und Position aller Teile in der Montagemaschine berechnet wird.
Wenn die Montagemaschine ein verankertes Teil hat, wird der Mittelpunkt der Masse des Teils das Zentrum der Masse der Montagemaschine sein, und die Montagemaschine wird eine unendliche Masse haben.
Die Kenntnis des Zentrums der Masse kann der Montagemaschine dabei helfen, Stabilität zu wahren.Eine Kraft, die auf das Zentrum der Masse angewendet wird, verursacht keine anguläre Beschleunigung, nur lineare.Eine Montagemaschine mit einem niedrigen Schwerpunkt wird es besser überstehen, unter dem Einfluss der Gravitation aufrecht zu bleiben.
AssemblyLinearVelocity
Der lineare Geschwindigkeitsvektor der Montagemaschine dieses Teils. Es ist die Geschwindigkeitsänderungsrate in Studs pro Sekunde von AssemblyCenterOfMass.
Wenn du die Geschwindigkeit an einem Punkt kennen möchtest, der sich vom Zentrum der Masse der Montagemaschine unterscheidet, verwende GetVelocityAtPosition().
Die direkte Festlegung der Geschwindigkeit kann zu unrealistischen Bewegungen führen.Die Verwendung einer VectorForce Einschränkung wird bevorzugt, oder verwende ApplyImpulse(), wenn du sofortige Änderung der Geschwindigkeit möchtest.
Wenn das Teil im Besitz des Servers ist, muss diese Eigenschaft von einem Server Script (nicht von einem LocalScript oder einem Script mit RunContext auf Enum.RunContext.Client festgelegt).Wenn das Teil durch automatisches Eigentum eines Clients im Besitz ist, kann diese Eigenschaft von einem Client-Skript oder einem Skript, das. PL: die Skriptsgeändert werden; eine Änderung von einem Client-Skript für ein serverseitiges Teil wird keine Auswirkung haben.
AssemblyMass
Die Summe der Masse aller BaseParts im Zusammenbau dieses Teils.Teile, die Massless und nicht das Wurzelteil der Montagemaschine sind, werden nicht zum AssemblyMass beitragen.
Wenn die Montagemaschine ein verankertes Teil hat, wird die Massemasse der Montagemaschine als unendlich betrachtet.Einschränkungen und andere physische Interaktionen zwischen unverankerten Montagemaschinen mit einem großen Unterschied in der Masse können Instabilitäten verursachen.
AssemblyRootPart
Diese Eigenschaft zeigt an, dass die BasePart automatisch gewählt wurde, um den Wurfteil der Montagemaschine zu repräsentieren.Es ist derselbe Teil, der zurückgegeben wird, wenn Entwickler GetRootPart() anrufen.
Der Wurzelteil kann geändert werden, indem die RootPriority der Teile in der Montagemaschine geändert werden.
Teile, die alle dasselbe AssemblyRootPart teilen, befinden sich in derselben Montagemaschine.
Für weitere Informationen zu Wurzelteilen siehe Versammlungen.
AudioCanCollide
AudioCanCollide bestimmt, ob das teil physisch mit der audio-simulation interagieren wird, ähnlich wie CastShadow für beleuchtung.
Wenn deaktiviert, durchläuft das Audio das Teil; es wird nicht verschlossen oder reflektiert.
BackSurface
Die Eigenschaft BackSurface bestimmt die Art der Oberfläche, die für die positive Z -Richtung eines Teils verwendet wird.Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine Verbindung zwischen ihnen herstellen.
BottomSurface
Die Eigenschaft BottomSurface bestimmt die Art der Oberfläche, die für die negative Y -Richtung eines Teils verwendet wird.Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine Verbindung zwischen ihnen herstellen.
BrickColor
Diese Eigenschaft legt die Farbe eines Teils fest.Wenn das Teil ein Material hat, bestimmt dies auch die Farbe, die beim Rendern der Texturverwendet wird.Für mehr Kontrolle über die Farbe kann die Color Eigenschaft verwendet werden, und diese Eigenschaft wird die nächste BrickColor verwenden.
Andere visuelle Eigenschaften eines Teils werden durch Transparency und Reflectance bestimmt.
CFrame
Die Eigenschaft CFrame bestimmt sowohl die Position als auch die Ausrichtung des BasePart in der Welt.Es fungiert als willkürliche Referenzposition auf der Geometrie, aber ExtentsCFrame repräsentiert das tatsächliche CFrame seines physischen Zentrums.
Wenn du CFrame auf ein Teil einstellst, werden auch andere verbundene Teile im Verhältnis zum Teil verschoben, aber es wird empfohlen, PVInstance:PivotTo() zu verwenden, um ein ganzes Modell zu verschieben, z. B. wenn du einen Charakter eines Spieler:inteleportierst.
Im Gegensatz zu der Einstellung BasePart.Position, wird die Einstellung CFrame immer den Teil in die genaue angegebene CFrame verschieben; mit anderen Worten: keine Überlappungsprüfung wird durchgeführt und der Physiklöser wird versuchen, jede Überlappung zu lösen, es sei denn, beide Teile sind Anchored .
Um Positionen in Bezug auf ein Teil CFrame zu verfolgen, kann ein Attachment nützlich sein.
Code-Beispiele
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.
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
CanCollide bestimmt, ob ein Teil physisch mit anderen Teilen interagieren wird.Wenn deaktiviert, können andere Teile durch das Teil ununterbrochen passieren.Teile, die für Dekoration verwendet werden, haben in der Regel CanCollide deaktiviert, da sie vom Physik-Engine nicht berücksichtigt werden müssen.
Wenn ein Teil nicht Anchored und deaktiviert ist CanCollide, kann es aus der Welt fallen, um schließlich von Workspace.FallenPartsDestroyHeight zerstört zu werden.
Wenn CanCollide deaktiviert ist, können Teile immer noch das Ereignis Touched auslösen (und auch die anderen Teile, die sie berühren).Du kannst dies deaktivieren mit CanTouch .
Für weitere Informationen zu Kollisionen siehe Kollisionen.
Code-Beispiele
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.
-- 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
Diese Eigenschaft legt fest, ob das Teil während räumlicher Abfrageoperationen betrachtet wird, wie GetPartBoundsInBox oder Raycast.Beachten Sie, dass CanCollide deaktiviert werden muss, damit CanQuery in Kraft tritt, und räumliche Abfragefunktionen nie Teile mit CanQuery von false enthalten.
Abgesehen von dieser Eigenschaftenist es auch möglich, Teile auszuschließen, die Nachkommen einer bestimmten Liste von Teilen mit einem OverlapParams oder RaycastParams Objekt verwenden, wenn die räumlichen Abfragefunktionen aufgerufen werden.
CanTouch
Diese Eigenschaft bestimmt, ob Touched und TouchEnded Ereignisse auf der Seite abgefeuert werden.Wenn true , müssen andere berührende Teile auch CanTouch auf true gesetzt werden, damit Berührungsereignisse abgefeuert werden können.Wenn false , können keine Berührungsereignisse für das Teil eingerichtet werden, und ein Versuch, dies zu tun, wird einen Fehler werfen.Ebenso, wenn die Eigenschaft auf false nach einem Berührungsevent verbunden wird, wird das Ereignis getrennt und die TouchTransmitter entfernt.
Beachten Sie, dass diese Kollisionslogik so eingestellt werden kann, dass sie Kollisionsgruppen respektiert, durch die EigenschaftenWorkspace.TouchesUseCollisionGroups.Wenn true , ignorieren Teile in nicht kollidierenden Gruppen sowohl Kollisionen und Berührungsereignisse, wodurch diese Eigenschaft irrelevant wird.
Leistung
Es gibt einen kleinen Leistungsgewinn bei Teilen, die sowohl CanTouch als auch CanCollide auf false festgelegt sind, da diese Teile niemals irgendeine Art von Teil-zu-Teil-Kollisionen berechnen müssen.Sie können jedoch immer noch von Raycasts und OverlapParams Anfragen getroffen werden.
CastShadow
Bestimmt, ob ein Teil einen Schatten wirft oder nicht.Die Deaktivierung dieser Eigenschaft für ein bestimmtes Teil kann zu visuellen Artefakten auf den Schatten führen, die auf diesem Teil geworfen werden.
Diese Eigenschaft ist nicht für die Leistungssteigerung gedacht, aber in komplexen Szenen kann die strategische Deaktivierung von bestimmten Teilen die Erfüllungverbessern.Aufgrund der Möglichkeit visueller Artefakte empfehlen wir, es in den meisten Situationen auf allen Teilen aktiviert zu lassen.
CenterOfMass
Die Eigenschaft CenterOfMass beschreibt die lokale Position des Zentrums der Masse eines Teils.Wenn es sich um eine einzelne Teilemontagemaschine handelt, ist dies die AssemblyCenterOfMass aus der Welt in den lokalen Raum konvertierte.Auf einfachem Parts , ist das Zentrum der Masse immer (0, 0, 0) , aber es kann für WedgePart oder MeshPart variieren.
CollisionGroup
Die Eigenschaft CollisionGroup beschreibt den Namen der Kollisionsgruppe des Teils (maximal 100 Zeichen).Teile beginnen in der Standardgruppe, deren Name "Default" ist.Dieser Wert kann nicht leer sein.
Obwohl diese Eigenschaft selbst nicht repliziert wird, repliziert die Engine intern den Wert durch eine andere private Eigenschaft, um Rückwärtskompatibilitätsprobleme zu lösen.
Code-Beispiele
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().
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
Die Eigenschaft Color bestimmt die Farbe eines Teils.Wenn das Teil ein Material hat, bestimmt dies auch die Farbe, die beim Rendern der Texturverwendet wird.
Wenn diese Eigenschaft festlegenist, wird BrickColor die nächste Übereinstimmung mit diesem Color Wert verwenden.
Andere visuelle Eigenschaften eines Teils werden durch Transparency und Reflectance bestimmt.
Code-Beispiele
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.
-- 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
CurrentPhysicalProperties zeigt die aktuellen physischen Eigenschaften des Teils an.Du kannst benutzerdefinierte Werte für die physischen Eigenschaften pro Teil, benutzerdefiniertes Material und überschreibenfestlegen.Die Roblox-Engine priorisiert feinere Definitionen bei der Bestimmung der effektiven physischen Eigenschaften eines Teils.Die Werte in der folgenden Liste sind in der Reihenfolge von der höchsten bis zur niedrigsten Priorität:
- Benutzerdefinierte physische Eigenschaften des Teils
- Benutzerdefinierte physische Eigenschaften des benutzerdefinierten Materials des Teils
- Benutzerdefinierte physische Eigenschaften der Materialveränderung des Materials des Teils
- Standardphysikalische Eigenschaften des Materials des Teils
CustomPhysicalProperties
CustomPhysicalProperties ermöglicht es dir, verschiedene physikalische aspekte eines teils anzupassen, wie seine dichte, reibung und elastizität.
Wenn aktiviert, lässt diese Eigenschaft Sie diese physischen Eigenschaften konfigurieren.Wenn deaktiviert, werden diese physischen Eigenschaften durch das Material des Teils bestimmt.
Code-Beispiele
This code sample demonstrates how to set the CustomPhysicalProperties property of a part.
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
Wenn true aktiviert ist und wenn Workspace.FluidForces aktiviert ist, veranlasst dies die Physik-Engine, aerodynamische Kräfte auf diesem BasePart zu berechnen.
ExtentsSize
Die tatsächliche physische Größe des BasePart als von der Physik-Engine betrachtet, zum Beispiel in Kollisionserkennung.
FrontSurface
Die Eigenschaft FrontSurface bestimmt die Art der Oberfläche, die für die negative Z -Richtung eines Teils verwendet wird.Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine Verbindung zwischen ihnen herstellen.
LeftSurface
Die Eigenschaft LeftSurface bestimmt die Art der Oberfläche, die für die negative X -Richtung eines Teils verwendet wird.Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine Verbindung zwischen ihnen herstellen.
LocalTransparencyModifier
Die Eigenschaft LocalTransparencyModifier ist ein Multiplikator für Transparency, der nur für den lokalen Client sichtbar ist.Es repliziert sich nicht von Client zu Server und ist nützlich, wenn ein Teil für einen bestimmten Client nicht gerendert werden sollte, wie der Spieler die Körperteile seines Charakters nicht sieht, wenn er in den First-Person-Modus wechselt.
Diese Eigenschaft modifiziert die Transparenz des lokalen Teils durch die folgende Formel, mit den daraus resultierenden Werten zwischen 0 und 1.
1 - (( 1 - Transparency ) × ( 1 - LocalTransparencyModifier ))
<th><code>Lokaler Transparenz-Modifizierer</code></th><th>Serverseite</th><th>Client-Seite</th></tr></thead><tbody><tr><td><code>0.5</code></td><td><code>0</code></td><td><code>0.5</code></td><td><code>0.5</code></td></tr><tr><td><code>0.5</code></td><td><code>0.25</code></td><td><code>0.5</code></td><td><code>0.625</code></td></tr><tr><td><code>0.5</code></td><td><code>0.5</code></td><td><code>0.5</code></td><td><code>0.75</code></td></tr><tr><td><code>0.5</code></td><td><code>0.75</code></td><td><code>0.5</code></td><td><code>0.875</code></td></tr><tr><td><code>0.5</code></td><td><code>1</code></td><td><code>0.5</code></td><td><code>1</code></td></tr></tbody>
Locked
Die Eigenschaft Locked bestimmt, ob ein Teil (oder ein Model es enthält) im Studio ausgewählt werden kann, indem darauf geklickt wird.Diese Eigenschaft ist am häufigsten aktiviert auf Teilen innerhalb von Umgebungsmodellen, die im Moment nicht bearbeitet werden.
Code-Beispiele
This code sample uses the concept of recursion to unlock all parts that are a descendant of a model.
-- 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
Mass ist eine lesbare Eigenschaft, die die Produktmenge und -dichte eines Teils beschreibt. Sie wird durch die Funktion GetMass() zurückgegeben.
- Die Dichte eines Teils wird durch seine Material oder CustomPhysicalProperties bestimmt, wenn angegeben.
Massless
Wenn diese Eigenschaft aktiviert ist, trägt das Teil nicht zur Gesamtmenge oder zur Inertie seiner Montagemaschine bei, solange es mit einem anderen Teil verschweißt ist, das eine Masse hat.
Wenn das Teil sein eigenes Wurzelteil gemäß AssemblyRootPart ist, wird dies für dieses Teil ignoriert, und es wird weiterhin Masse und Inertie zu seiner Montagemaschine beitragen wie ein normales Teil.Teile, die maschenlos sind, sollten niemals ein Montierungsroot-Teil werden, es sei denn alle anderen Teile in der Montagemaschine sind ebenfalls maschenlos.
Dies könnte nützlich sein für Dinge wie optionale Zubehörteile an Fahrzeugen, die nicht die Handhabung des Autos beeinflussen oder eine maschenlose Render-Mesh, die mit einer einfacheren Kollisionsmeshes verschweißt wird.
Siehe auch Zusammenstellungen, einen Artikel, der dokumentiert, was Wurzelteile sind und wie sie verwendet werden.
Material
Die Eigenschaft Material ermöglicht es Ihnen, die Textur und die Standardphysikalischen Eigenschaften eines Teils festzulegen (im Fall, dass CustomPhysicalProperties ungesetzt ist).Das Standardmaterial Plastic hat eine sehr leichte Textur, während das Material SmoothPlastic überhaupt keine Textur hat.Einige Materialtexturen wie DiamondPlate und Granite haben sehr sichtbare Texturen.Die Textur eines jeden Materials reflektiert Sonnenlicht unterschiedlich, insbesondere Foil .
Das Festlegen dieser Eigenschaft und dann das Aktivieren von CustomPhysicalProperties verwendet die Standardphysikalischen Eigenschaften eines Materials.Zum Instanzist DiamondPlate ein sehr dichtes Material, während Wood sehr leicht ist.Die Dichte eines Teils bestimmt, ob es im Geländewasser treiben wird.
Die Glass Materialänderungen verändern das Renderingverhalten bei mäßigen Grafikeinstellungen durch die Anwendung eines Hauch an Reflexion (ähnlich wie Reflectance ) und Perspektivverzerrung.Der Effekt ist besonders ausgeprägt auf kugelförmigen Teilen.Halbtransparente Teile hinter Glass Teilen sind nicht sichtbar.
MaterialVariant
Das System durchsucht die MaterialVariant Instanz mit dem angegebenen MaterialVariant Namen und Material eingeben.Wenn es eine passende MaterialVariant Instanz erfolgreich findet, verwendet es diese Instanz, um das Standardmaterial zu ersetzen.Das Standardmaterial kann das integrierte Material oder ein Überschreiben MaterialVariant sein, das in MaterialService angegeben wurde.
Orientation
Die Eigenschaft Orientation beschreibt die Rotation des Teils in Grad um die X , Y und Z Achsen mit einer Vector3 .Die Rotationen werden in Y > X > Z >Ordnung angewendet.Dies unterscheidet sich von richtigen Euler-Winkeln und ist stattdessen Tait-Bryan-Winkel, die Neigung , Tonhöhe und Roll beschreiben.
Es ist auch erwähnenswert, wie sich diese Eigenschaft vom CFrame.Angles() Konstruktor unterscheidet, der Rotationen in einer anderen Reihenfolge anwendet ( Z > Y > X ).Für eine bessere Kontrolle über die Rotation eines Teils wird empfohlen, stattdessen CFrame festzulegen.
Wenn diese Eigenschaftenfestgelegt wird, wird jede Welds oder Motor6Ds, die mit diesem Teil verbunden ist, die zugeordnete Eigenschaft C0 oder C1 aktualisiert, um zu ermöglichen, dass sich das Teil in Bezug auf alle anderen Teile bewegt, zu denen es verbunden ist.WeldConstraints wird auch während des Verschiebungswerkzeugvorübergehend deaktiviert und wieder aktiviert.
Code-Beispiele
This code sample rotates a part continually on the Y axis.
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
Diese Eigenschaft gibt den Versatz des Drehpunkts des Teils von seiner CFrame an, das ist BasePart:GetPivot() ist das gleiche wie BasePart.CFrame multipliziert mit BasePart.PivotOffset .
Dies ist bequem, um den Pivot auf einen Ort im lokalen Platzeinzustellen, aber der Pivot eines Teils auf einen Ort im Weltraum kann wie folgt eingestellt werden:
local Workspace = game:GetService("Workspace")local part = Workspace.BluePartlocal desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)
Code-Beispiele
This code sample shows a custom function for resetting the pivot of a model back to the center of that model's bounding box.
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.
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
Die Eigenschaft Position beschreibt die Koordinaten eines Teils mit einem Vector3.Es spiegelt die Position des Teils CFrame , aber es kann auch festlegenwerden.
Wenn diese Eigenschaftenfestgelegt wird, wird jede Welds oder Motor6Ds, die mit diesem Teil verbunden ist, die zugeordnete Eigenschaft C0 oder C1 aktualisiert, um zu ermöglichen, dass sich das Teil in Bezug auf alle anderen Teile bewegt, zu denen es verbunden ist.WeldConstraints wird auch während des Verschiebungswerkzeugvorübergehend deaktiviert und wieder aktiviert.
ReceiveAge
Zeigt die Zeit in Sekunden an, seit die Physik des Teils zum letzten Mal auf dem lokalen Client oder dem Server aktualisiert wurde.Dieser Wert wird 0 sein, wenn das Teil keine Physik hat (Anchored ist true).
Reflectance
Die Eigenschaft Reflectance bestimmt, wie viel ein Teil den Himmel widerspiegelt.Ein Wert von 0 zeigt an, dass das Teil Allenicht reflektierend ist, und ein Wert von 1 zeigt an, dass das Teil vollständig reflektieren sollte.
Die Reflexion wird nicht durch Transparency beeinträchtigt, es sei denn, das Teil ist vollständig durchsichtig, in dem Fall wird die Reflexion Allenicht dargestellt.Die Reflexion kann oder wird möglicherweise ignoriert, abhängig von der Material des Teils.
ResizeIncrement
Die Eigenschaft ResizeIncrement ist eine lesbare Eigenschaft, die die kleinste Änderung in der Größe beschreibt, die von der Resize()-Methode zulässig ist.Es unterscheidet sich zwischen Implementierungen der BasePart abstrakten Klasse; zum Instanzhat Part dies zu 1 festgelegt, während TrussPart dies zu 2 festgelegt hat, da einzelne Trägerabschnitte 2×2×2 in der Größe sind.
ResizeableFaces
Die Eigenschaft ResizeableFaces verwendet ein Faces Objekt, um die verschiedenen Gesichter zu beschreiben, auf denen ein Teil skaliert werden kann.Für die meisten Implementierungen von BasePart, wie Part und WedgePart, enthält diese Eigenschaft alle Gesichter.Allerdings wird TrussPart seine ResizeableFaces Set auf nur zwei Gesichter einstellen, da diese Art von Teilen zwei Size Dimensionen der Länge haben muss 2.
Diese Eigenschaft wird am häufigsten mit Werkzeugen zum Bauen und Manipulieren von Teilen verwendet und hat wenig Verwendung außerhalb dieses Kontextes.Die Handles-Klasse, die die EigenschaftenHandles.Faces hat, kann in Verbindung mit dieser Eigenschaft verwendet werden, um nur die Griffe auf Gesichtern anzuzeigen, die auf einem Teil skaliert werden können.
Code-Beispiele
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.
-- 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
Die Eigenschaft RightSurface bestimmt die Art der Oberfläche, die für die positive X -Richtung eines Teils verwendet wird.Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine Verbindung zwischen ihnen herstellen.
RootPriority
Diese Eigenschaft ist eine Zahl zwischen -127 und 127, die vorrangig vor allen anderen Regeln für die Sortierung der sortierenist.Wenn mehrere Teile betrachtet werden, die nicht Anchored und die gleiche Massless Werte teilen, wird ein Teil mit einem höheren RootPriority Priorität vor denen mit niedrigeren RootPriority Werten haben.
Sie können diese Eigenschaft verwenden, um zu steuern, welcher Teil einer Montagemaschine der Wurzelteil ist, und den Wurzelteil stabil halten, wenn sich die Größe ändert.
Siehe auch Zusammenstellungen, einen Artikel, der dokumentiert, was Wurzelteile sind und wie sie verwendet werden.
Rotation
Die Rotation des Teils in Grad für die drei Achsen.
Wenn diese Eigenschaftenfestgelegt wird, wird jede Welds oder Motor6Ds, die mit diesem Teil verbunden ist, die zugeordnete Eigenschaft C0 oder C1 aktualisiert, um zu ermöglichen, dass sich das Teil in Bezug auf alle anderen Teile bewegt, zu denen es verbunden ist.WeldConstraints wird auch während des Verschiebungswerkzeugvorübergehend deaktiviert und wieder aktiviert.
Size
Die Eigenschaft einer Teile Size bestimmt seine visuellen Dimensionen, während ExtentsSize die tatsächliche Größe darstellt, die vom Physik-Engine verwendet wird, wie in Kollisionserkennung .Die einzelnen Dimensionen (Länge, Breite, Höhe) können so niedrig wie 0.001 und so hoch wie 2048 sein.Größen dimensionen unter werden visuell dargestellt, als wären die Dimensionen des Teils .
Die Size eines Teils wird auf verschiedene Weise verwendet:
- Um seine Masse zu beeinflussen, wie von GetMass() gegeben.
- Von ParticleEmitter um den Bereich zu bestimmen, aus dem Partikel gespawnt werden.
- Von BlockMesh an, um den teilweise rendierten rechteckigen Prisma zu bestimmen.
- Von SpecialMesh für bestimmte MeshTypes um die Größe des gerenderten Meshes zu bestimmen.
- Von SurfaceLight um den Bereich zu bestimmen, der beleuchtet werden soll.
Code-Beispiele
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.
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
TopSurface
Die Eigenschaft TopSurface bestimmt die Art der Oberfläche, die für die positive Y -Richtung eines Teils verwendet wird.Wenn die Gesichter von zwei Teilen nebeneinander platziert werden, können sie eine Verbindung zwischen ihnen herstellen.
Transparency
Die Transparency Eigenschaft steuert die Sichtbarkeit eines Teils auf einer Skala von 0 bis 1, wo 0 vollständig sichtbar (opak) und 1 vollständig unsichtbar (nicht gerendert) ist.
Während vollständig transparente Teile überhaupt nicht gerendert werden, haben teilweise transparente Objekte erhebliche Rendekosten.Viele durchsichtige Teile können die Erfüllungbeeinträchtigen.
Wenn transparente Teile überschneiden, kann die Render-Reihenfolge unberechenbar sein, sodass du halbtransparente Teile von Überschneidungen vermeiden solltest.
Siehe auch LocalTransparencyModifier als Multiplikator für Transparency, das nur für den lokalen Client sichtbar ist.
Code-Beispiele
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.
-- 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()
Methoden
AngularAccelerationToTorque
Parameter
Rückgaben
ApplyAngularImpulse
Wendet einen sofortigen kreisförmigen Kraftimpuls auf die Montagemaschine an, wodurch diese sich dreht.
Die daraus resultierende axiale Geschwindigkeit aus dem Impuls basiert auf der Montagemaschine mass.Es ist also ein höherer Impuls erforderlich, um massivere Versammlungen zu bewegen.Impulse sind nützlich für Fälle, in denen Sie eine Kraft sofort anwenden möchten, wie z. B. eine Explosion oder Kollision.
Wenn das Teil im Besitz des Servers ist, muss diese Funktion von einem Server aufgerufen werden Script (nicht von einem LocalScript oder einem Script mit RunContext auf Enum.RunContext.Client festgelegt).Wenn das Teil durch automatisches Eigentum eines Clients im Besitz ist, kann diese Funktion von einem Client-Skript oder einem Skript, das. PL: die Skriptsaufgerufen werden; ein Aufruf von einem Client-Skript für ein serverseitiges Teil wird keine Auswirkung haben
Parameter
Ein winkeliger Impulsvektor, der auf die Montagemaschine angewendet werden soll.
Rückgaben
ApplyImpulse
Diese Funktion wendet einen sofortigen Kraftimpuls auf die Montagemaschine dieses Teils an.
Die Kraft wird bei der Montagemaschine center of mass angewendet, so dass die daraus resultierende Bewegung nur lineär ist.
Die daraus resultierende Geschwindigkeit vom Impuls basiert auf der Montagemaschine mass.Es ist also ein höherer Impuls erforderlich, um massivere Versammlungen zu bewegen.Impulse sind nützlich für Fälle, in denen Sie eine Kraft sofort anwenden möchten, wie z. B. eine Explosion oder Kollision.
Wenn das Teil im Besitz des Servers ist, muss diese Funktion von einem Server aufgerufen werden Script (nicht von einem LocalScript oder einem Script mit RunContext auf Enum.RunContext.Client festgelegt).Wenn das Teil durch automatisches Eigentum eines Clients im Besitz ist, kann diese Funktion von einem Client-Skript oder einem Skript, das. PL: die Skriptsaufgerufen werden; ein Aufruf von einem Client-Skript für ein serverseitiges Teil wird keine Auswirkung haben
Parameter
Ein lineärer Impulsvektor, der auf die Montagemaschine angewendet werden soll.
Rückgaben
ApplyImpulseAtPosition
Diese Funktion wendet einen sofortigen Kraftimpuls auf die Montagemaschine dieses Teils an, an der angegebenen Stelle im Platz.
Wenn die Position nicht an der Montagemaschine center of mass ist, verursacht der Impuls eine positorische und rotierende Bewegung.
Die daraus resultierende Geschwindigkeit vom Impuls basiert auf der Montagemaschine mass.Es ist also ein höherer Impuls erforderlich, um massivere Versammlungen zu bewegen.Impulse sind nützlich für Fälle, in denen Entwickler eine Kraft sofort anwenden möchten, wie z. B. eine Explosion oder Kollision.
Wenn das Teil im Besitz des Servers ist, muss diese Funktion von einem Server aufgerufen werden Script (nicht von einem LocalScript oder einem Script mit RunContext auf Enum.RunContext.Client festgelegt).Wenn das Teil durch automatisches Eigentum eines Clients im Besitz ist, kann diese Funktion von einem Client-Skript oder einem Skript, das. PL: die Skriptsaufgerufen werden; ein Aufruf von einem Client-Skript für ein serverseitiges Teil wird keine Auswirkung haben
Parameter
Ein Impulsvektor, der auf die Montagemaschine angewendet werden soll.
Die Position, im Platz, um den Impuls anzuwenden.
Rückgaben
CanCollideWith
Gibt zurück, ob die Teile miteinander kollidieren können oder nicht.Diese Funktion berücksichtigt die Kollisionsgruppen der beiden Teile.Diese Funktion gibt einen Fehler aus, wenn das angegebene Teil kein Basisteil ist.
Parameter
Das angegebene Teil wird auf Kollidierbarkeit überprüft.
Rückgaben
Ob die Teile miteinander kollidieren können.
CanSetNetworkOwnership
Die Funktion CanSetNetworkOwnership prüft, ob du die Netzwerkbesitzschaft eines Teils festlegen kannst.
Der Rückgabewert der Funktion überprüft, ob du BasePart:SetNetworkOwner() oder BasePart:SetNetworkOwnershipAuto() ohne Fehler aufrufen kannst oder nicht.Es gibt die wahre zurück, wenn Sie das Netzwerkbesitz ändern/lesen können, oder gibt falsch zurück und den Grund, warum Sie es nicht können, als String.
Rückgaben
Ob du das Netzwerkbesitz und den Grund modifizieren oder lesen kannst.
Code-Beispiele
This example checks whether or not the network ownership of the first BasePart named Part in the Workspace 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
GetConnectedParts
Gibt eine Tabelle von Teilen zurück, die mit dem Objekt durch eine starre Verbindung verbunden sind.
Wenn recursive wahr ist, gibt diese Funktion alle Teile in der Montagemaschine zurück, die eng mit der Basisteil verbunden sind.
Starr verbindliche Gelenke
Wenn ein Gelenk zwei Teile miteinander verbindet (Part0 → Part1), ist ein Gelenk steif , wenn die Physik von Part1 vollständig durch Part0 blockiert wird.Dies gilt nur für die folgenden gemeinsamen Arten:
Parameter
Rückgaben
GetJoints
Gib alle Gelenke oder Einschränkungen zurück, die mit diesem Teil verbunden sind.
Rückgaben
Ein Array aller Gelenke oder Einschränkungen, die mit dem Teil verbunden sind.
GetMass
GetMass gibt den Wert der lesbaren Mass Eigenschaftenzurück.
Diese Funktion geht der EigenschaftenMass voraus. Sie bleibt für die Rückwärtskompatibilität unterstützt; du solltest die Eigenschaft Mass direkt verwenden.
Rückgaben
Die Masse des Teils.
Code-Beispiele
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 ...
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
Gibt den aktuellen Spieler zurück, der der Netzwerkbesitzer dieses Teils ist, oder nil im Falle des Servers.
Rückgaben
Der aktuelle Spieler, der der Netzwerkbesitzer dieses Teils ist, oder nil im Falle des Servers.
GetNetworkOwnershipAuto
Gibt wahr zurück, wenn die SpielEngine das Netzwerkbesitzer automatisch für diesen Teil entscheidet.
Rückgaben
Ob die SpielEngine das Netzwerk-Besitzer automatisch für diesen Teil entscheidet.
GetNoCollisionConstraints
Rückgaben
GetRootPart
Gibt das Basisteil einer Montagemaschine zurück.Wenn du eine Montagemaschine aus Teilen mit einem CFrame bewegst.Es ist wichtig, diesen Basisteil zu verschieben (dies wird alle anderen Teile, die damit verbunden sind, entsprechend verschieben).Weitere Informationen finden Sie im Artikel Versammlungen.
Diese Funktion geht der EigenschaftenAssemblyRootPart voraus. Sie bleibt für die Rückwärtskompatibilität unterstützt, aber du solltest AssemblyRootPart direkt verwenden.
Rückgaben
Der Basisteil einer Montagemaschine (eine Sammlung von Teilen, die miteinander verbunden sind).
GetTouchingParts
Gibt eine Tabelle aller Teile zurück, die physisch mit diesem Teil interagieren.Wenn das Teil selbst auf false gesetzt ist CanCollide, dann gibt diese Funktion eine leere Tabelle zurück, es sei denn, das Teil hat ein TouchInterest Objekt, das ihm zugewiesen ist (was bedeutet, dass etwas mit seinem Berührten-Ereignis verbunden ist).Teile, die sich zwar benachbaren, aber nicht überlappen, werden nicht als berührend angesehen.Diese Funktion geht der Funktion WorldRoot:GetPartsInPart() vor, die mehr Flexibilität bietet und die speziellen TouchInterest Regeln vermeidet, die oben beschrieben wurden.Verwende stattdessen WorldRoot:GetPartsInPart().
Rückgaben
Eine Tabelle aller Teile, die sich überlappen und mit diesem Teil kollidieren können.
GetVelocityAtPosition
Gibt die lineare Geschwindigkeit der Montagemaschine des Teils an der angegebenen Position in Bezug auf dieses Teil zurück.Es kann verwendet werden, um die lineare Geschwindigkeit von Teilen in einer Montagemaschine zu identifizieren, die nicht das Wurzelteil ist.Wenn die Montagemaschine keine anguläre Geschwindigkeit hat, ist die lineare Geschwindigkeit für jede Position immer die gleiche.
Parameter
Rückgaben
IsGrounded
Gibt wahr zurück, wenn das Objekt mit einem Teil verbunden ist, das es an einer Stelle hält (z. B. ein Anchored Teil), sonst gibt es false zurück.In einer Montagemaschine, die ein Anchored Teil hat, ist jedes andere Teil verankert.
Rückgaben
Ob das Objekt mit einem Teil verbunden ist, das es an einer Orthalten wird.
Resize
Ändert die Größe eines Objekts genau wie mit dem Tool.
Parameter
Die Seite zum Größe anpassen.
Wie viel auf der angegebenen Seite wachsen/schrumpfen.
Rückgaben
Ob das Teil skaliert wird.
SetNetworkOwner
Setzt den angegebenen Spieler als Netzwerkbesitzer für dieses und alle verbundenen Teile.Wenn playerInstance nil ist, ist der Server der Besitzer anstelle eines Spieler:in.
Parameter
Der Spieler erhält Netzwerkbesitz an dem Teil.
Rückgaben
SetNetworkOwnershipAuto
Lässt die SpielEngine dynamisch entscheiden, wer die Physik des Teils handhabt (einer der Clients oder der Server).
Rückgaben
TorqueToAngularAcceleration
Parameter
Rückgaben
IntersectAsync
Erstellt eine neue IntersectOperation aus der überlappenden Geometrie des Teils und der anderen Teile in dem angegebenen Array.Nur Parts werden unterstützt, nicht Terrain oder MeshParts.Ähnlich wie Clone() , hat das zurückgegebene Objekt keine festgelegte Parent .
Die folgenden Eigenschaften aus dem aufrufenden Teil werden auf das daraus resultierende IntersectOperation angewendet:
In der folgenden Bildvergleich wird IntersectAsync() auf den violetten Block mit einem Block entlang eines blauen Blöckeverwendet, der in einer Tabelle enthalten ist.Die daraus resultierende IntersectOperation löst sich in eine Form der überlappenden Geometrie beider Teile auf.

<figcaption>Getrennte Teile</figcaption>

<figcaption>Ergebnis <code>Klasse.IntersectOperation</code></figcaption>
Anmerkungen
- Die ursprünglichen Teile bleiben intakt, nachdem eine erfolgreiche Intersektionsoperation durchgeführt wurde.In den meisten Fällen solltest du Destroy() alle ursprünglichen Teile und die zurückgegebenen IntersectOperation an dens selben Ort übergeben, an den die aufrufende BasePart gerichtet ist.
- Standardmäßig werden die Gesichtsfarben der resultierenden Intersektion aus der Eigenschaft Color der ursprünglichen Teile entnommen.Um die gesamte Kreuzung in eine bestimmte Farbe zu ändern, legen Sie ihre UsePartColor Eigenschaft auf true fest.
- Wenn eine Intersektionsoperation zu einem Teil mit mehr als 20.000 Dreieck führt, wird es auf 20.000 Dreieck reduziert.
Parameter
Die Objekte, die an der Kreuzung teilnehmen.
Der Enum.CollisionFidelity Wert für das resultierende IntersectOperation.
Der Enum.RenderFidelity Wert des resultierenden PartOperation.
Rückgaben
Ergebnis IntersectOperation mit Standardnamen Überschneiden .
SubtractAsync
Erstellt ein neues UnionOperation vom Teil, minus die Geometrie, die von den Teilen im angegebenen Array besetzt wird.Nur Parts werden unterstützt, nicht Terrain oder MeshParts.Ähnlich wie Clone() , hat das zurückgegebene Objekt keine festgelegte Parent .
Beachte, dass die resultierende Union aufgrund von Subtraktionen nicht leer sein kann. Wenn die Operation zu einer völlig leeren Geometrie führen würde, wird sie fehlschlagen.
Bei der folgenden Bildvergleich wird SubtractAsync() auf den blauen Zylinder mit einem Tisch aufgerufen, der den lila Blöckeenthält.Die daraus resultierende UnionOperation Form löst sich in eine Form auf, die die Geometrie des Blöckevon der des Zylinders auslässt.

<figcaption>Getrennte Teile</figcaption>

<figcaption>Ergebnis <code>Class.UnionOperation</code></figcaption>
Parameter
Die Objekte, die an der Subtraktion teilnehmen.
Der Enum.CollisionFidelity Wert für das resultierende UnionOperation.
Der Enum.RenderFidelity Wert des resultierenden PartOperation.
Rückgaben
Ergebnis UnionOperation mit Standardnamen Union .
Code-Beispiele
This example demonstrates how to subtract part(s) from another BasePart to form a negated UnionOperation.
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
Erstellt ein neues UnionOperation vom Teil plus die Geometrie, die von den Teilen im angegebenen Array besetzt wird.Nur Parts werden unterstützt, nicht Terrain oder MeshParts.Ähnlich wie Clone() , hat das zurückgegebene Objekt keine festgelegte Parent .
Die folgenden Eigenschaften aus dem aufrufenden Teil werden auf das daraus resultierende UnionOperation angewendet:
In der folgenden Bildvergleich wird UnionAsync() auf den blauen Block mit einem Block entlang des violetten Zylinders aufgerufen, der einen Tisch enthält.Die daraus resultierende UnionOperation löst sich in eine Form der kombinierten Geometrie beider Teile auf.

<figcaption>Getrennte Teile</figcaption>

<figcaption>Ergebnis <code>Class.UnionOperation</code></figcaption>
Anmerkungen
- Die ursprünglichen Teile bleiben intakt, nachdem eine erfolgreiche Union-Operation durchgeführt wurde.In den meisten Fällen solltest du Destroy() alle ursprünglichen Teile und die zurückgegebenen UnionOperation an dens selben Ort übergeben, an den die aufrufende BasePart gerichtet ist.
- Standardmäßig respektiert die resultierende Union die Eigenschaft Color von jedem ihrer Teile.Um die gesamte Union auf eine bestimmte Farbe zu ändern, legen Sie ihre UsePartColor Eigenschaft auf true fest.
- Wenn eine Union-Operation zu einem Teil mit mehr als 20.000 Dreieck führt, wird es auf 20.000 Dreieck reduziert.
Parameter
Die Objekte, die an der Union mit dem aufrufenden Teil teilnehmen.
Der Enum.CollisionFidelity Wert für das resultierende UnionOperation.
Der Enum.RenderFidelity Wert des resultierenden PartOperation.
Rückgaben
Ergebnis UnionOperation mit Standardnamen Union .
Code-Beispiele
This example demonstrates how to combine the geometry of one BasePart with the geometry of other part(s) to form a UnionOperation.
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, wenn ein Teil aufhört, unter ähnlichen Bedingungen wie die von BasePart.Touched einen anderen Teil zu berühren.
Dieses Ereignis arbeitet in Zusammenarbeit mit Workspace.TouchesUseCollisionGroups, um anzugeben, ob Kollisionsgruppen für die Erkennung anerkannt werden.
Parameter
Code-Beispiele
This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.
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 Kontakt kommt.Wenn zum Instanz TeilA in TeilB stößt, dann PartA.Touched feuert mit TeilB und PartB.Touched feuert mit TeilA .
Dieses Ereignis wird nur als Ergebnis einer physischen Bewegung abgefeuert, also wird es nicht abgefeuert, wenn die CFrame Eigenschaft geändert wurde, so dass ein Teil ein anderes Teil überlässt.Dies bedeutet auch, dass mindestens einer der beteiligten Teile nicht zur Zeit der Kollision sein muss Anchored.
Dieses Ereignis arbeitet in Zusammenarbeit mit Workspace.TouchesUseCollisionGroups, um anzugeben, ob Kollisionsgruppen für die Erkennung anerkannt werden.
Parameter
Der andere Teil, der mit dem angegebenen Teil in Kontakt kam.
Code-Beispiele
This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.
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.
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