DragDetector

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Instancja DragDetector ułatwia i zachęca do interakcji z obiektami 3D w doświadczeniu, takimi jak otwieranie drzwi i szuflad, przesuwanie części i wiele więcej.Główne funkcje obejmują:

  • Umieść DragDetector pod dowolnym BasePart lub Model aby uczynić go przeciąganym za pomocą wszystkich wejść (mysz, dotyk, gamepad i VR), wszystko bez pojedynczej linii kodu.

  • Wybierz z kilku opcji DragStyle, określ, jak obiekt reaguje na ruch za pomocą ResponseStyle , a opcjonalnie zastosuj ograniczenia osi lub ruchu.

  • Skrypty mogą reagować na manipulację przeciągniętymi obiektami, aby sterować interfejsem użytkownika lub podejmować logiczne decyzje, takie jak dostosowywanie poziomu oświetlenia w pokoju w oparciu o przełącznik regulacji jasności ściany przesuwnej.

  • Gracze mogą manipulować zakotwiczone części lub modele i zostaną dokładnie tam, gdzie je umieścisz po wydaniu.

  • Praca w Studio tak długo, jak jesteś nie korzystasz z narzędzia Wybierz, Przesuń, Skala lub Obróć, co ułatwia testowanie i dostosowywanie przeciąganych obiektów podczas edycji.

Zobacz przewodnik 3D Drag Detectors dla szczegółów i przykładów użycia.

Podsumowanie

Właściwości

Właściwości odziedziczeni z: ClickDetector

Metody

Zdarzenia

Zdarzenia odziedziczeni z: ClickDetector

Właściwości

ActivatedCursorIcon

ContentId
Odczyt równoległy

Ustawia ikonę kurora do wyświetlenia, gdy mysz jest aktywowana nad rodzicem tego DragDetector .Jeśli ta właściwość pozostanie pusta, detektor użyje domyślnego ikona.

Aby zmienić aktywną ikonakurora, ustaw tę właściwość na ID zasobu obrazu, który chcesz użyć.

ApplyAtCenterOfMass

Odczyt równoległy

Gdy jest fałszywy (domyślny), stosuje się siłę ograniczenia w punkcie, na który kliknął użytkownik.Gdy prawda, siła jest zastosowana w centrum masy obiektu.Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i rodzący się obiekt nie jest zakotwiczony.

Bez replikacji
Odczyt równoległy

Podstawowy osi ruchu, wyrażony względem ramienia odniesienia.Dla DragStyle z Enum.DragDetectorDragStyle.TranslateLine , kierunek tłumaczenia; dla Enum.DragDetectorDragStyle.TranslatePlane , normalny do płaszczyzny ruchu; dla Enum.DragDetectorDragStyle.RotateAxis , osi rotacji 1D.Zmiana tej wartości automatycznie aktualizuje Orientation i odwrotnie.

DragFrame

Odczyt równoległy

Jeśli ReferenceInstance jest ustawiać, CFrame punkt obrotu względem ramy odniesienia; w przeciwnym razie CFrame punkt obrotu względem ramy na początku przeciągania.

Odczyt równoległy

Paradygmat używany do generowania proponowanego ruchu, biorąc pod uwagę strumień promieni kurora. Zobacz Enum.DragDetectorDragStyle opcje.

Enabled

Odczyt równoległy

Jeśli prawda, DragDetector odpowiada na wejście użytkownika; jeśli fałsz, nie robi tego.

GamepadModeSwitchKeyCode

Odczyt równoległy

Podczas wpisywania gamepada, Enum.KeyCode dla przełączania trybu ruchu wtórnego.Dotyczy tylko wtedy, gdy detektor przeciągnięć DragStyle ma zarówno tryb ruchu pierwotny, jak i wtórny.

KeyboardModeSwitchKeyCode

Odczyt równoległy

Podczas wpisywania klawiatury, Enum.KeyCode do przełączania trybu ruchu wtórnego.Dotyczy tylko wtedy, gdy detektor przeciągnięć DragStyle ma zarówno tryb ruchu pierwotny, jak i wtórny.

MaxDragAngle

Odczyt równoległy

Jeśli jest to większe niż MinDragAngle, tłumaczenie zostanie ograniczone w tym zakresie.

Nie jest to ograniczenie; po prostu utrudnia próby wykrywacza przeciążeń generowania ruchu, aby pozostać w granicach.Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do przeciągnięcia.

Tylko istotne, jeśli DragStyle jest Enum.DragDetectorDragStyle.RotateAxis.

MaxDragTranslation

Odczyt równoległy

W dowolnym wymiarze, jeśli jest większy niż MinDragTranslation, tłumaczenie zostanie ograniczone w tym zakresie.

Nie jest to ograniczenie; po prostu utrudnia próby wykrywacza przeciążeń generowania ruchu, aby pozostać w granicach.Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do przeciągnięcia.

MaxForce

Odczyt równoległy

Maksymalna siła zastosowana do osiągnięcia celu przez obiekt. Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i rodzic jest niezakotwiczone.

MaxTorque

Odczyt równoległy

Maksymalny moment obrotowy zastosowany do osiągnięcia celu obiektu. Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i rodzic jest niezakotwiczone.

MinDragAngle

Odczyt równoległy

Jeśli jest to mniej niż MaxDragAngle, tłumaczenie zostanie ograniczone w tym zakresie.

Nie jest to ograniczenie; po prostu utrudnia próby wykrywacza przeciążeń generowania ruchu, aby pozostać w granicach.Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do przeciągnięcia.

Tylko istotne, jeśli DragStyle jest Enum.DragDetectorDragStyle.RotateAxis.

MinDragTranslation

Odczyt równoległy

W każdym wymiarze, jeśli jest mniejsza niż MaxDragTranslation, tłumaczenie zostanie ograniczone w tym zakresie.

Nie jest to ograniczenie; po prostu utrudnia próby wykrywacza przeciążeń generowania ruchu, aby pozostać w granicach.Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do przeciągnięcia.

Orientation

Odczyt równoległy

Określa rotację YXZ osi ruchu względem ramy odniesienia (nie zmienia orientacji samej ramy odniesienia).Liniowa translacja i rotacja osiowa będzie na tym przekierowanym Y osi, a płaska translacja w planie XZ .Zmiana tej wartości automatycznie aktualizuje Axis i odwrotnie.

Odczyt równoległy

Kontroluje poziom uprawnień, z którymi gracze mogą wchodzić w interakcję z DragDetector. Domyślnie jest to Enum.DragDetectorPermissionPolicy.Everybody .

ReferenceInstance

Odczyt równoległy

Instancja, której CFrame jest ramą odniesienia dla wykrywacza przeciągnięćThe DragFrame jest wyrażony względem tego CFrame, które można odzyskać za pomocą metody GetReferenceFrame().

Jeśli ta instancja jest PVInstance, ram odniesienia będzie jej osią; jeśli jest Attachment, to jej świat CFrame.Jeśli jest nil lub żadna z wcześniejszych, ram odniesienia będzie oparta na osi obrotu rodzica wykrywacza przeciągów BasePart lub Model.

Odczyt równoległy

Gdy zaproponowana propozycja została obliczona i potencjalnie ograniczona, jest to paradigma używana do przesuwania lub nie przesuwania obiektów dotkniętych przez DragDetector.Zobacz Enum.DragDetectorResponseStyle opcje.

Responsiveness

Odczyt równoległy

Wyższe wartości powodują, że obiekt szybciej osiągnie swój cel. Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i obiekt rodzic nie jest zakotwiczony.

RunLocally

Odczyt równoległy

Jeśli jest fałszywy (domyślny), klient wysyła powielone sygnały (DragStart, DragContinue, DragEnd) do serwera, który przetwarza promienie kurora, wprowadza zmiany w modelu danych i replikuje je dalej do klientów.

Jeśli prawda, klient przetwarza te sygnały samodzielnie i nie replikuje ich na serwerze.Klient LocalScripts może być użyty do odpowiedzi na te wydarzenia, a RemoteEvents może być użyty do wysłania wszelkich wynikowych zmian, które powinny zostać replikowane na serwerze.

SecondaryAxis

Bez replikacji
Odczyt równoległy

Wtórna osi ruchu. Odnosi się do orientacji za pomocą tego samego paradigmatu, co Attachments .

TrackballRadialPullFactor

Odczyt równoległy

Gdy kurzor znajduje się poza trackball, DragDetector może zastosować radialną rotację ciągnienia, która obraca kulę tak, jakby próbowała się rozwijać w kierunku kurzora.Właściwość ta jest mnożnikiem od 0 do 1 dla dodania tej rotacji jako wkładu do całkowitej sumy.Tylko istotne, jeśli DragStyle jest Enum.DragDetectorDragStyle.RotateTrackball.

TrackballRollFactor

Odczyt równoległy

Gdy kurzor znajduje się poza trackball, DragDetector może zastosować rotację obrotu, która obraca piłkę tak, jakby była zamontowana na winylowym rekordzie skierowanym w stronę odbiorcy.Właściwość ta jest mnożnikiem 0 do 1 dla dodania tej rotacji wału do całkowitej sumy.Tylko istotne, jeśli DragStyle jest Enum.DragDetectorDragStyle.RotateTrackball.

VRSwitchKeyCode

Odczyt równoległy

Podczas wpisu VR, Enum.KeyCode dla przełączania trybu ruchu wtórnego.Dotyczy tylko wtedy, gdy detektor przeciągnięć DragStyle ma zarówno tryb ruchu pierwotny, jak i wtórny.

WorldAxis

Bez replikacji
Odczyt równoległy

The Axis wyrażone w przestrzeni świata. Odnosi się do orientacji za pomocą tego samego paradigmatu co Attachments.

WorldSecondaryAxis

Bez replikacji
Odczyt równoległy

The SecondaryAxis wyrażone w przestrzeni świata. Odnosi się do orientacji za pomocą tego samego paradigmatu co Attachments.

Metody

AddConstraintFunction

Dodaje funkcję do modyfikacji lub ograniczania proponowanego ruchu.Funkcja przyjmuje wejście CFrame z proponowanym ruchem i zwraca CFrame z zmienionym lub niezmienionym ruchem.Zarówno wejście, jak i wyjście są wyrażone względem ramy odniesienia.Możesz dodać wiele funkcji, które zostaną wezwane w kolejności priority, przekazując wyniki w łańcuchu.

Aby usunąć dodaną funkcję ograniczenia, wezwij Disconnect() na zwroconym obiekcie połączenia.

Parametry

priority: number

kolejność priorytetu dla funkcji dodanych za pomocą tej metody. Wyższe wartości mają pierwszeństwo przed niższymi wartościami.

Wartość domyślna: ""
function: function

Funkcja do modyfikowania lub ograniczania proponowanego ruchu.Funkcja ta przyjmuje wejście CFrame z proponowanym ruchem i zwraca CFrame z zmodyfikowanym lub niezmodyfikowanym ruchem, oba względem ramienia odniesienia.

Wartość domyślna: ""

Zwroty

Użyj tego obiektu połączenia, aby usunąć funkcję ograniczenia.

GetReferenceFrame

Zwraca odniesienie CFrame, w którym wyrażona jest ruch; zobacz właściwość ReferenceInstance dla więcej szczegółów.


Zwroty

Odniesienie CFrame, w którym wyrażona jest ruch.

RestartDrag

()

Można go wywołać z kodu, aby ponownie uruchomić przeciąganie za pomocą nowych parametrów, jeśli parametry takie jak DragStyle, Axis lub SecondaryAxis zmienią się.


Zwroty

()

SetDragStyleFunction

()

Przekazuje funkcję do użycia, jeśli i tylko jeśli DragStyle jest ustawiony na Enum.DragDetectorDragStyle.Scriptable.Podana funkcja jest wywoływana w odpowiedzi na sygnał DragContinue , otrzymuje promień kurora przestrzeni światowej sygnału z typem Ray i zwraca CFrame zawierający pożądaną lokalizację i orientację pivotu w przestrzeni świata.

Jeśli funkcja zwraca nil, obiekt nie zostanie przeniesiony.Jest to przydatne, jeśli skrypt nie zebrał jeszcze wszystkich informacji, których potrzebuje, aby dać poprawną odpowiedź, lub w przypadkach tymczasowych, w których chcesz, aby obiekt pozostał tam, gdzie jest.

Parametry

function: function

Funkcja do monitorowania sygnałów DragContinue .Funkcja ta otrzymuje promień kurora przestrzeni światowej sygnału i zwraca CFrame zawierający pożądaną lokalizację i orientację osi w przestrzeni świata.Jeśli ta funkcja zwraca nil, obiekt nie zostanie przeniesiony.

Wartość domyślna: ""

Zwroty

()

SetPermissionPolicyFunction

()

Przekazuje funkcję do użycia, jeśli i tylko jeśli PermissionPolicy jest ustawiony na Enum.DragDetectorPermissionPolicy.Scriptable.Podana funkcja akceptuje parametr Player dla włączenia/wyłączenia wykrywacza dla określonego gracza.Otrzymuje również parametr part wskazujący, który konkretny BasePart został kliknięty, tak jak jedna część w przeciąganej Model ; jest to przydatne do włączania/wyłączania wykrywacza na podstawie wartości Name , Color , HasTag() lub innych szczegółów.


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)

Parametry

function: function

Funkcja ustawiająca interaktywność detektora.Funkcja ta akceptuje parametr Player w celu włączenia/wyłączenia wykrywacza dla określonego gracza.Otrzymuje również parametr part wskazujący, który konkretny BasePart został kliknięty, tak jak jedna część w przeciąganej Model części; jest to przydatne do włączania/wyłączania wykrywacza na podstawie wartości Name , Color , HasTag() lub innych szczegółów.

Wartość domyślna: ""

Zwroty

()

Zdarzenia

DragContinue

Wystrzeliwuje, gdy użytkownik nadal przeciąga obiekt po tym, jak DragStart został uruchomiony.

Parametry

playerWhoDragged: Player

The Player który zainicjował przeciąg poprzez DragStart i teraz kontynuuje przeciąg.

cursorRay: Ray

Ray promieniujące z kurora, skierowane w stronę sceny.

viewFrame: CFrame

CFrame z użytkownika Camera.

vrInputFrame: OptionalCoordinateFrame

Jeśli używasz urządzeniewejściowego VR, CFrame ręka trzymająca kurzor/wskaźnik/sterownik.

isModeSwitchKeyDown: boolean

Jeśli wykrywacz przeciągnięć DragStyle ma oba tryby ruchu pierwotny i wtórny, ten parametr wskazuje, czy użytkownik naciska modyfikator wejściowy określony przez KeyboardModeSwitchKeyCode, GamepadModeSwitchKeyCode lub VRSwitchKeyCode.


DragEnd

Wystrzeliwuje, gdy użytkownik przestaje przeciągać obiekt.

Parametry

playerWhoDragged: Player

The Player który zainicjował przeciąg poprzez DragStart i teraz zakończył (wypuszczono) przeciąg.


DragStart

Wystrzeliwuje, gdy użytkownik zaczyna przeciągać obiekt.

Parametry

playerWhoDragged: Player

Player kto rozpoczął przeciąganie.

cursorRay: Ray

Ray promieniujące z kurora, skierowane w stronę sceny.

viewFrame: CFrame

CFrame z użytkownika Camera.

hitFrame: CFrame

Rama trafień promienia kurora, który rozpoczął przeciąganie.

clickedPart: BasePart

Część, która została uderzona przez promień kurora, który zainicjował przeciąganie.

vrInputFrame: OptionalCoordinateFrame

Jeśli używasz urządzeniewejściowego VR, CFrame ręka trzymająca kurzor/wskaźnik/sterownik.

isModeSwitchKeyDown: boolean

Jeśli wykrywacz przeciągnięć DragStyle ma oba tryby ruchu pierwotny i wtórny, ten parametr wskazuje, czy użytkownik naciska modyfikator wejściowy określony przez KeyboardModeSwitchKeyCode, GamepadModeSwitchKeyCode lub VRSwitchKeyCode.