DragDetector

Veraltete anzeigen

*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

Eigenschaften von ClickDetector übernommen

Methoden

Ereignisse

Ereignisse von ClickDetector übernommen

Eigenschaften

ActivatedCursorIcon

ContentId
Parallel lesen

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

Parallel lesen

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.

Nicht repliziert
Parallel lesen

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

Parallel lesen

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.

Parallel lesen

Das Paradigma, das verwendet wird, um einen vorgeschlagenen Vorschlag zu generieren, gegeben einen Strom von Cursorstrahlen. Siehe Enum.DragDetectorDragStyle für Optionen.

Enabled

Parallel lesen

Wenn true, reagiert der DragDetector auf die Eingabe des Benutzers; wenn false, tut er es nicht.

GamepadModeSwitchKeyCode

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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.

Parallel lesen

Steuert das Berechtigungslevel, mit dem Spieler mit dem DragDetector interagieren können. Standard ist Enum.DragDetectorPermissionPolicy.Everybody .

ReferenceInstance

Parallel lesen

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.

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Nicht repliziert
Parallel lesen

Die sekundäre Achse der Bewegung. Bezieht sich auf Orientierung mit demselben Paradigma wie Attachments.

TrackballRadialPullFactor

Parallel lesen

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

Parallel lesen

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

Parallel lesen

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

Nicht repliziert
Parallel lesen

Die Axis im Platzausgedrückte. Bezieht sich auf Orientierung mit demselben Paradigma wie Attachments.

WorldSecondaryAxis

Nicht repliziert
Parallel lesen

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

priority: number

Die Reihenfolge der Priorität für Funktionen, die über diese Methode hinzugefügt wurden. Höhere Werte haben Vorrang vor niedrigeren Werten.

Standardwert: ""
function: function

Funktion zum Ändern oder Einschränken des vorgeschlagenen Bewegungsablaufs.Diese Funktion nimmt eine Eingabe CFrame von vorgeschlagenem Antrag und gibt eine CFrame von modifiziertem oder unmodifiziertem Antrag zurück, beide im Vergleich zum Referenzrahmen.

Standardwert: ""

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

Die Referenz CFrame, in der Bewegung zum Ausdruck kommt.

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

function: function

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.

Standardwert: ""

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

function: function

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.

Standardwert: ""

Rückgaben

()

Ereignisse

DragContinue

Feuert, wenn ein Benutzer das Objekt weiter zieht, nachdem DragStart initiiert wurde.

Parameter

playerWhoDragged: Player

Die Player die den Drag durch DragStart initiiert hat und jetzt den Drag fortsetzt.

cursorRay: Ray

Ray emaniert vom cursor, gerichtet auf die szene.

viewFrame: CFrame

CFrame des benutzers Camera.

vrInputFrame: OptionalCoordinateFrame

Wenn ein Gerätverwendet wird, ist die CFrame der Hand, die den Cursor/Pfeiler/Controller hält.

isModeSwitchKeyDown: boolean

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

playerWhoDragged: Player

Die Player, die den Drag durch DragStart initiiert hat und den Drag jetzt beendet hat (freigegeben wurde).


DragStart

Feuert, wenn ein Benutzer beginnt, das Objekt zu ziehen.

Parameter

playerWhoDragged: Player

Player wer die drag initiiert hat.

cursorRay: Ray

Ray emaniert vom cursor, gerichtet auf die szene.

viewFrame: CFrame

CFrame des benutzers Camera.

hitFrame: CFrame

Der Trefferrahmen des Cursor-Strahls, der die Drag initiiert hat.

clickedPart: BasePart

Der Teil, der vom Cursor-Strahlencast getroffen wurde, der die Drag initiiert hat.

vrInputFrame: OptionalCoordinateFrame

Wenn ein Gerätverwendet wird, ist die CFrame der Hand, die den Cursor/Pfeiler/Controller hält.

isModeSwitchKeyDown: boolean

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.