DragDetector
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Die DragDetector Instanz erleichtert und fördert die Interaktion mit 3D-Objekten in einem Erlebnis, wie das Öffnen von Türen und Schubladen, das Gleiten eines Teils herum und vieles mehr.Die wichtigsten Funktionen umfassen:
Platziere ein DragDetector unter jedem BasePart oder Model, um es über alle Eingänge (Maus, Touch, Gamepad und VR) ziehbar zu machen, alles ohne eine einzige Zeile Codes.
Wählen Sie aus mehreren DragStyle, definieren Sie, wie das Objekt auf Bewegung durch ResponseStyle reagiert, und wenden Sie optional Achs- oder Bewegungslimiten an.
Skripte können auf die Manipulation von gezogenen Objekten reagieren, um die Benutzeroberfläche zu steuern oder logische Entscheidungen zu treffen, wie die Anpassung des Lichtniveaus in einem Raum basierend auf einer gleitenden Wandschalter-Dimmer.
Spieler können angeankerte Teile oder Modelle manipulieren, und sie bleiben genau dort, wo du sie bei der Veröffentlichung platziert hast.
Arbeite in Studio, solange du nicht die Werkzeuge Auswählen, Bewegen, Skalieren oder Drehen verwendest, was es einfacher macht, ziehbare Objekte während der Bearbeitung zu testen und anzupassen.
Siehe den 3D-Drag-Detektoren-Leitfaden für Details und Nutzungsbeispiele.
Zusammenfassung
Eigenschaften
Setzt das Cursor-Symbol so ein, dass es angezeigt wird, wenn die Maus über dem Elternteil dieser DragDetector aktiviert ist.
Ob die Einschränkungskraft auf das Zentrum der Masse des Objekts angewendet wird.
Die primäre Bewegungsachse, ausgedrückt in Bezug auf den Referenzrahmen.
Das CFrame des Pivots, abhängig vom Drag-Detektor von ReferenceInstance.
Das Paradigma, das verwendet wird, um vorgeschlagene Bewegung zu generieren.
Ob die DragDetector auf die Eingabe des Benutzers antwortet.
Während der Gamepad-Eingabe wird der Modifikator Enum.KeyCode für den sekundären Bewegungsmodus.
Während der Tastatureingabe wird der Modifikator Enum.KeyCode für den sekundären Bewegungsmodus.
Zusammen mit MinDragAngle verhindert es die Versuche des Ziehdetektors, Bewegung zu generieren.
Zusammen mit MinDragTranslation verhindert es die Versuche des Ziehdetektors, Bewegung zu generieren.
Maximale Kraft, die für das Objekt angewendet wird, um sein Ziel zu erreichen.
Maximales Drehmoment für das Objekt, um sein Ziel zu erreichen.
Zusammen mit MaxDragAngle verhindert es die Versuche des Ziehdetektors, Bewegung zu generieren.
Zusammen mit MaxDragTranslation verhindert es die Versuche des Ziehdetektors, Bewegung zu generieren.
Gibt die YXZ Rotation der Achsen der Bewegung im Vergleich zum Referenzrahmen an.
Steuert das Berechtigungslevel, mit dem Spieler mit dem DragDetector interagieren können.
Eine Instanz, deren CFrame der Referenzrahmen für den Drag-Detektor ist
Das Paradigma, mit dem die von der Drag-Detektor betroffenen Objekte Verschiebungswerkzeugoder nicht Verschiebungswerkzeugwerden.
Höhere Werte veranlassen das Objekt, sein Ziel schneller zu erreichen.
Ob die Eingabe eines Benutzers auf einem DragDetector-Replikat auf den Server übertragen wird oder lokal am spezifischen Client bleibt.
Die sekundäre Achse der Bewegung.
Wenn DragStyle ist Enum.DragDetectorDragStyle.RotateTrackball , Multiplikator für das Hinzufügen einer radialen Zieh rotation als Beitrag zur Gesamtsumme.
Wenn DragStyle ist Enum.DragDetectorDragStyle.RotateTrackball , Multiplikator für das Hinzufügen von Roll rotation zum Gesamtbetrag.
Während der VR-Eingabe wird der Modifizierer Enum.KeyCode für den sekundären Bewegungsmodus.
Die Axis im Platzausgedrückt.
Die SecondaryAxis im Platzausgedrückt.
Setzt das Cursor-Symbol so ein, dass es angezeigt wird, wenn die Maus über dem Elternteil dieser ClickDetector oder DragDetector ist.
Maximale Entfernung zwischen einem Charakter und dem ClickDetector oder DragDetector für den Spieler, um damit interagieren zu können.
Methoden
Fügt eine Funktion hinzu, um vorgeschlagene Bewegung zu modifizieren oder einzuschränken.
Gibt die Referenz zurück CFrame, in der die Bewegung zum Ausdruck kommt.
Kann von einem Skript aus aufgerufen werden, um den Drag mit neuen Parametern neu zu starten.
Überlässt eine Funktion, die verwendet wird, wenn und nur wenn DragStyle auf Enum.DragDetectorDragStyle.Scriptable gesetzt ist.
Überlässt eine Funktion, die verwendet wird, wenn und nur wenn PermissionPolicy auf Enum.DragDetectorPermissionPolicy.Scriptable gesetzt ist.
Ereignisse
- DragContinue(playerWhoDragged : Player,cursorRay : Ray,viewFrame : CFrame,vrInputFrame : OptionalCoordinateFrame,isModeSwitchKeyDown : boolean):RBXScriptSignal
Feuert, wenn ein Benutzer das Objekt weiter zieht, nachdem DragStart initiiert wurde.
Feuert, wenn ein Benutzer aufhört, das Objekt zu ziehen.
Feuert, wenn ein Benutzer beginnt, das Objekt zu ziehen.
Feuert, wenn ein Spieler mit dem Elternteil eines ClickDetector oder DragDetector interagiert.
Feuert, wenn der Elternteil eines ClickDetector oder DragDetector von einem Spieler:inüberfahren wird.
Feuert, wenn der Cursor eines Spieler:invon der Mutter eines ClickDetector oder DragDetector abweicht.
Feuert, wenn ein Spieler mit der rechten Maustaste auf eine ClickDetector oder DragDetector klickt.
Eigenschaften
ActivatedCursorIcon
Setzt das Cursor-Symbol so ein, dass es angezeigt wird, wenn die Maus über dem Elternteil dieser DragDetector aktiviert ist.Wenn diese Eigenschaft leer gelassen wird, verwendet der Detektor das Standard-Symbol.
Um das aktivierte Symbolzu ändern, legen Sie diese Eigenschaft auf die Asset-ID des Bildes fest, das Sie verwenden möchten.
ApplyAtCenterOfMass
Wenn falsch (Standard), wird die Einschränkungskraft am Punkt angewendet, auf den der Benutzer klickt.Wenn wahr, wird Kraft am Zentrum der Masse des Objekts angewendet.Nur relevant, wenn ResponseStyle ist Enum.DragDetectorResponseStyle.Physical und das zugeordnete Objekt unverankert ist.
Axis
Die primäre Bewegungsachse, ausgedrückt in Bezug auf den Referenzrahmen.Für ein DragStyle von Enum.DragDetectorDragStyle.TranslateLine , die Richtung der Übersetzung; für Enum.DragDetectorDragStyle.TranslatePlane , die normale zur Bewegungsfläche; für Enum.DragDetectorDragStyle.RotateAxis , die Achse der 1D-Rotation.Das Ändern dieses Werts aktualisiert automatisch Orientation und umgekehrt.
DragFrame
Wenn ReferenceInstance festlegenist, das CFrame des Pivots im Verhältnis zum Referenzrahmen; ansonsten das CFrame des Pivots im Verhältnis zu seinem Rahmen zu Beginn des Ziehens.
DragStyle
Das Paradigma, das verwendet wird, um einen vorgeschlagenen Vorschlag zu generieren, gegeben einen Strom von Cursorstrahlen. Siehe Enum.DragDetectorDragStyle für Optionen.
Enabled
Wenn true, reagiert der DragDetector auf die Eingabe des Benutzers; wenn false, tut er es nicht.
GamepadModeSwitchKeyCode
Während der Gamepad-Eingabe, das Enum.KeyCode zum Umschalten des sekundären Bewegungsmodus.Gilt nur, wenn der Ziehdetektor DragStyle sowohl primäre als auch sekundäre Bewegungsmodi hat.
KeyboardModeSwitchKeyCode
Während der Tastatureingabe wird die Enum.KeyCode zum Umschalten des sekundären Bewegungsmodus.Gilt nur, wenn der Ziehdetektor DragStyle sowohl primäre als auch sekundäre Bewegungsmodi hat.
MaxDragAngle
Wenn dies größer als MinDragAngle ist, wird die Übersetzung innerhalb dieses Bereichs gekappt.
Dies ist keine Beschränkung; es hindert nur die Versuche des Ziehdetektors, Bewegung zu generieren, um innerhalb der Grenzen zu bleiben.Siehe AddConstraintFunction(), um eine benutzerdefinierte Einschränkung zu einem Ziehen hinzuzufügen.
Nur relevant, wenn DragStyle relevant ist Enum.DragDetectorDragStyle.RotateAxis.
MaxDragTranslation
In jeder Dimension, wenn dies größer als MinDragTranslation ist, wird die Übersetzung innerhalb dieses Bereichs gekappt.
Dies ist keine Beschränkung; es hindert nur die Versuche des Ziehdetektors, Bewegung zu generieren, um innerhalb der Grenzen zu bleiben.Siehe AddConstraintFunction(), um eine benutzerdefinierte Einschränkung zu einem Ziehen hinzuzufügen.
MaxForce
Maximale Kraft, die für das Objekt angewendet wird, um sein Ziel zu erreichen. Nur relevant, wenn ResponseStyle ist Enum.DragDetectorResponseStyle.Physical und das zugeordnete Objekt unverankert ist.
MaxTorque
Maximales Drehmoment für das Objekt, um sein Ziel zu erreichen. Nur relevant, wenn ResponseStyle ist Enum.DragDetectorResponseStyle.Physical und das zugeordnete Objekt unverankert ist.
MinDragAngle
Wenn dies weniger als MaxDragAngle ist, wird die Übersetzung innerhalb dieses Bereichs gekappt.
Dies ist keine Beschränkung; es hindert nur die Versuche des Ziehdetektors, Bewegung zu generieren, um innerhalb der Grenzen zu bleiben.Siehe AddConstraintFunction(), um eine benutzerdefinierte Einschränkung zu einem Ziehen hinzuzufügen.
Nur relevant, wenn DragStyle relevant ist Enum.DragDetectorDragStyle.RotateAxis.
MinDragTranslation
In jeder Dimension, wenn dies weniger als MaxDragTranslation ist, wird die Übersetzung innerhalb dieses Bereichs gekappt.
Dies ist keine Beschränkung; es hindert nur die Versuche des Ziehdetektors, Bewegung zu generieren, um innerhalb der Grenzen zu bleiben.Siehe AddConstraintFunction(), um eine benutzerdefinierte Einschränkung zu einem Ziehen hinzuzufügen.
Orientation
Gibt die YXZ -Drehung der Bewegungsachsen im Vergleich zum Referenzrahmen an (ändert nicht die Orientierung des Referenzrahmens selbst).Lineare Translation und axiale Rotation werden auf dieser umorientierten Y -Achse und planare Translation in der XZ -Ebene sein.Das Ändern dieses Werts aktualisiert automatisch Axis und umgekehrt.
PermissionPolicy
Steuert das Berechtigungslevel, mit dem Spieler mit dem DragDetector interagieren können. Standard ist Enum.DragDetectorPermissionPolicy.Everybody .
ReferenceInstance
Eine Instanz, deren CFrame der Referenzrahmen für den Drag-Detektor istDie DragFrame wird relativ zu dieser CFrame zum Ausdruck gebracht, die über die GetReferenceFrame()-Methode abgerufen werden kann.
Wenn diese Instanz ein PVInstance ist, ist der Referenzrahmen ihr Punkt; wenn ein Attachment , dann ist seine Welt CFrame .Wenn es nil oder keines der beiden früheren ist, wird der Referenzrahmen auf den Pivot des Drag-Detektors-Parents basieren BasePart oder Model.
ResponseStyle
Sobald die vorgeschlagene Bewegung berechnet und möglicherweise eingeschränkt wurde, ist dies das Paradigma, mit dem die von der DragDetector betroffenen Objekte Verschiebungswerkzeugoder nicht Verschiebungswerkzeugwerden.Siehe Enum.DragDetectorResponseStyle für Optionen.
Responsiveness
Höhere Werte veranlassen, dass das Objekt sein Ziel schneller erreicht. Nur relevant, wenn ResponseStyle ist Enum.DragDetectorResponseStyle.Physical und das übergeordnete Objekt unverankert ist.
RunLocally
Wenn falsch (Standard), sendet der Client replizierte Signale ( DragStart , DragContinue , DragEnd ) an den Server, der den Cursorstrahl verarbeitet, das Modelländert und ihn an Clients weiterreicht.
Wenn es wahr ist, verarbeitet der Client diese Signale selbst und repliziert sie nicht auf den Server.Client LocalScripts kann verwendet werden, um auf diese Ereignisse zu reagieren, und RemoteEvents kann verwendet werden, um alle daraus resultierenden Änderungen an den Server zu senden, die repliziert werden sollen.
SecondaryAxis
Die sekundäre Achse der Bewegung. Bezieht sich auf Orientierung mit demselben Paradigma wie Attachments.
TrackballRadialPullFactor
Wenn der Cursor außerhalb des Trackballs ist, kann die DragDetector eine radiale Ziehrotierung anwenden, die den Ball so dreht, als ob er sich auf den Cursor ausrollen würde.Diese Eigenschaft ist ein Multiplikator von 0 bis 1 für das Hinzufügen dieser Rotation als Beitrag zum Gesamtbetrag.Nur relevant, wenn DragStyle relevant ist Enum.DragDetectorDragStyle.RotateTrackball.
TrackballRollFactor
Wenn der Cursor außerhalb des Trackballs ist, kann die DragDetector eine Roll rotation anwenden, die den Ball so dreht, als wäre er auf einem Vinyl-Record montiert, der auf den Betrachter ausgerichtet ist.Diese Eigenschaft ist ein Multiplikator von 0 bis 1 für das Hinzufügen dieser Roll rotation zum Gesamtbetrag.Nur relevant, wenn DragStyle relevant ist Enum.DragDetectorDragStyle.RotateTrackball.
VRSwitchKeyCode
Während der VR-Eingabe wird der Enum.KeyCode zum Umschalten des sekundären Bewegungsmodus.Gilt nur, wenn der Ziehdetektor DragStyle sowohl primäre als auch sekundäre Bewegungsmodi hat.
WorldAxis
Die Axis im Platzausgedrückte. Bezieht sich auf Orientierung mit demselben Paradigma wie Attachments.
WorldSecondaryAxis
Die SecondaryAxis im Platzausgedrückte. Bezieht sich auf Orientierung mit demselben Paradigma wie Attachments.
Methoden
AddConstraintFunction
Fügt eine Funktion hinzu, um vorgeschlagene Bewegung zu modifizieren oder einzuschränken.Die Funktion nimmt eine Eingabe CFrame von vorgeschlagenem Antrag und gibt eine CFrame von modifiziertem oder unmodifiziertem Antrag zurück.Sowohl die Eingabe als auch die Ausgabe werden in Bezug auf den Referenzrahmen ausgedrückt.Du kannst mehrere Funktionen hinzufügen, die nach priority aufgerufen werden, und die Ergebnisse in einer Kette weitergeben.
Um eine hinzugefügte Einschränkungsfunktion zu entfernen, rufe Disconnect() auf das zurückgegebene Objektauf.
Parameter
Die Reihenfolge der Priorität für Funktionen, die über diese Methode hinzugefügt wurden. Höhere Werte haben Vorrang vor niedrigeren Werten.
Rückgaben
Verwende dieses Verbindungsobjekt, um die Einschränkungsfunktion zu entfernen.
GetReferenceFrame
Gibt die Referenz zurück CFrame, in der die Bewegung zum Ausdruck kommt; siehe die Eigenschaft ReferenceInstance für weitere Details.
Rückgaben
RestartDrag
Kann von einem Skript aus aufgerufen werden, um das Ziehen mit neuen Parametern neu zu starten, wenn sich Parameter wie DragStyle, Axis oder SecondaryAxis ändern.
Rückgaben
SetDragStyleFunction
Überlässt eine Funktion, die verwendet wird, wenn und nur wenn DragStyle auf Enum.DragDetectorDragStyle.Scriptable gesetzt ist.Die angegebene Funktion wird aufgerufen, wenn auf ein DragContinue Signal reagiert wird, es erhält den Welt空间-Cursor des Signals mit Typ Ray und gibt einen CFrame zurück, der die gewünschte Position und Ausrichtung des Pivots im Platzenthält.
Wenn die Funktion nil zurückgibt, wird das Objekt nicht verschoben.Dies ist nützlich, wenn das Skript noch nicht alle Informationen gesammelt hat, die es benötigt, um die richtige Antwort zu geben, oder in vorübergehenden Fällen, in denen Sie möchten, dass das Objekt dort bleibt, wo es ist.
Parameter
Funktion zum Überwachen von DragContinue.Diese Funktion erhält den Mauszeigerstrahl des Signals in der Welt und gibt einen CFrame zurück, der die gewünschte Position und Ausrichtung des Pivots in der Welt enthält.Wenn diese Funktion nil zurückgibt, wird das Objekt nicht verschoben.
Rückgaben
SetPermissionPolicyFunction
Überlässt eine Funktion, die verwendet wird, wenn und nur wenn PermissionPolicy auf Enum.DragDetectorPermissionPolicy.Scriptable gesetzt ist.Die angegebene Funktion akzeptiert einen Player -Parameter für die Aktivierung/Deaktivierung des Detektors für einen bestimmten Spieler:in.Es erhält auch einen part -Parameter, der anzeigt, welcher spezifische BasePart angeklickt wurde, wie zum Beispiel ein Teil innerhalb eines ziehbares Model ; dies ist nützlich, um den Detektor basierend auf dem Wert von Name , Color , HasTag() zu aktivieren/deaktivieren oder andere Details.
local dragDetector = script.Parent.DragDetector
dragDetector.PermissionPolicy = Enum.DragDetectorPermissionPolicy.Scriptable
dragDetector:SetPermissionPolicyFunction(function(player, part)
if player and player:GetAttribute("IsInTurn") then
return true
elseif part and not part:GetAttribute("IsDraggable") then
return false
else
return true
end
end)
Parameter
Funktion zum Festlegen der Interaktivität des Detektors.Diese Funktion akzeptiert einen Player -Parameter für die Aktivierung/Deaktivierung des Detektors für einen bestimmten Spieler:in.Es erhält auch einen part -Parameter, der anzeigt, welcher spezifische BasePart angeklickt wurde, wie zum Beispiel ein Teil innerhalb eines ziehbares Model ; dies ist nützlich, um den Detektor basierend auf dem Wert der Name , Color , HasTag() -Werte oder anderen Details zu aktivieren/deaktivieren.
Rückgaben
Ereignisse
DragContinue
Feuert, wenn ein Benutzer das Objekt weiter zieht, nachdem DragStart initiiert wurde.
Parameter
Wenn ein Gerätverwendet wird, ist die CFrame der Hand, die den Cursor/Pfeiler/Controller hält.
Wenn der Zieherdetektor DragStyle sowohl primäre als auch sekundäre Bewegungsmodi hat, zeigt dieser Parameter an, ob der Benutzer die Modifikatoreingabe, die durch KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode oder VRSwitchKeyCode definiert wurde, drückt.
DragEnd
Feuert, wenn ein Benutzer aufhört, das Objekt zu ziehen.
Parameter
DragStart
Feuert, wenn ein Benutzer beginnt, das Objekt zu ziehen.
Parameter
Der Trefferrahmen des Cursor-Strahls, der die Drag initiiert hat.
Der Teil, der vom Cursor-Strahlencast getroffen wurde, der die Drag initiiert hat.
Wenn ein Gerätverwendet wird, ist die CFrame der Hand, die den Cursor/Pfeiler/Controller hält.
Wenn der Zieherdetektor DragStyle sowohl primäre als auch sekundäre Bewegungsmodi hat, zeigt dieser Parameter an, ob der Benutzer die Modifikatoreingabe, die durch KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode oder VRSwitchKeyCode definiert wurde, drückt.