DragDetector
*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
Ustawia ikonę kurora do wyświetlenia, gdy mysz jest aktywowana nad rodzicem tego DragDetector .
Czy siła ograniczenia jest stosowana do centrum masy obiektu.
Podstawowy osi ruchu, wyrażony względem ramienia odniesienia.
The CFrame of the pivot, depending on wykrywacz przeciągnięć's ReferenceInstance.
Paradygmat używany do generowania proponowanego ruchu.
Czy DragDetector odpowiada na wejście użytkownika.
Podczas wpisu na gamepad modyfikator Enum.KeyCode dla trybu ruchu wtórnego.
Podczas wpisywania klawiatury modyfikator Enum.KeyCode dla trybu ruchu wtórnego.
Wraz z MinDragAngle, uniemożliwia próby wykrycia ruchu przez detektor przeciągnięć.
Wraz z MinDragTranslation, uniemożliwia próby wykrycia ruchu przez detektor przeciągnięć.
Maksymalna siła zastosowana do osiągnięcia celu przez obiekt.
Maksymalny moment obrotowy zastosowany do osiągnięcia celu przez obiekt.
Wraz z MaxDragAngle, uniemożliwia próby wykrycia ruchu przez detektor przeciągnięć.
Wraz z MaxDragTranslation, uniemożliwia próby wykrycia ruchu przez detektor przeciągnięć.
Określa rotację YXZ osi ruchu względem ramy odniesienia.
Kontroluje poziom uprawnień, z którymi gracze mogą wchodzić w interakcję z DragDetector.
Instancja, której CFrame jest ramą odniesienia dla wykrywacza przeciągnięć
Paradygmat używany do przesuwania lub nie przesuwania obiektów dotkniętych wykrywaczem przeciągnięć.
Wyższe wartości powodują, że obiekt szybciej osiąga swój cel.
Czy użytkownik wpisuje na serwer DragDetector replikaty, czy pozostaje lokalny dla określonego klienta.
Wtórna osia ruchu.
Jeśli DragStyle jest Enum.DragDetectorDragStyle.RotateTrackball, mnożnik dodawania rotacji pociągu radialnego jako wkładu do całkowitej liczby
Jeśli DragStyle jest Enum.DragDetectorDragStyle.RotateTrackball, mnożnik dodawania rotacji wału do całkowitej ilości
Podczas wpisu VR modyfikator Enum.KeyCode dla trybu ruchu wtórnego.
The Axis wyrażone w przestrzeni świata.
The SecondaryAxis wyrażone w przestrzeni świata.
Ustawia ikonę kurora do wyświetlenia, gdy mysz jest przewijana nad rodzicem tego ClickDetector lub DragDetector.
Maksymalna odległość między postacią a ClickDetector lub DragDetector dla gracza, aby mógł z nią interakować.
Metody
Dodaje funkcję do modyfikacji lub ograniczania proponowanego ruchu.
Zwraca odniesienie CFrame, w którym wyrażona jest ruch.
Można go wywołać z skryptu, aby ponownie uruchomić przeciąganie za pomocą nowych parametrów.
Przekazuje funkcję do użycia, jeśli i tylko jeśli DragStyle jest ustawiony na Enum.DragDetectorDragStyle.Scriptable.
Przekazuje funkcję do użycia, jeśli i tylko jeśli PermissionPolicy jest ustawiony na Enum.DragDetectorPermissionPolicy.Scriptable.
Zdarzenia
- DragContinue(playerWhoDragged : Player,cursorRay : Ray,viewFrame : CFrame,vrInputFrame : OptionalCoordinateFrame,isModeSwitchKeyDown : boolean):RBXScriptSignal
Wystrzeliwuje, gdy użytkownik nadal przeciąga obiekt po tym, jak DragStart został uruchomiony.
Wystrzeliwuje, gdy użytkownik przestaje przeciągać obiekt.
Wystrzeliwuje, gdy użytkownik zaczyna przeciągać obiekt.
Wystrzeliwuje, gdy gracz interakuje z rodzicem ClickDetector lub DragDetector .
Wystrzeliwuje się, gdy rodzic ClickDetector lub DragDetector zostanie pokryty przez gracza.
Wystrzeliwuje, gdy kurser gracza odpływa od rodzica ClickDetector lub DragDetector.
Wystrzeliwuje, gdy gracz kliknie prawym przyciskiem myszy na kursoрze na ClickDetector lub DragDetector.
Właściwości
ActivatedCursorIcon
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
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.
Axis
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
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.
DragStyle
Paradygmat używany do generowania proponowanego ruchu, biorąc pod uwagę strumień promieni kurora. Zobacz Enum.DragDetectorDragStyle opcje.
GamepadModeSwitchKeyCode
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
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
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
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
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
Maksymalny moment obrotowy zastosowany do osiągnięcia celu obiektu. Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i rodzic jest niezakotwiczone.
MinDragAngle
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
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
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.
PermissionPolicy
Kontroluje poziom uprawnień, z którymi gracze mogą wchodzić w interakcję z DragDetector. Domyślnie jest to Enum.DragDetectorPermissionPolicy.Everybody .
ReferenceInstance
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.
ResponseStyle
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
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
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
Wtórna osi ruchu. Odnosi się do orientacji za pomocą tego samego paradigmatu, co Attachments .
TrackballRadialPullFactor
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
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
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
The Axis wyrażone w przestrzeni świata. Odnosi się do orientacji za pomocą tego samego paradigmatu co Attachments.
WorldSecondaryAxis
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
kolejność priorytetu dla funkcji dodanych za pomocą tej metody. Wyższe wartości mają pierwszeństwo przed niższymi wartościami.
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
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
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.
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
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.
Zwroty
Zdarzenia
DragContinue
Wystrzeliwuje, gdy użytkownik nadal przeciąga obiekt po tym, jak DragStart został uruchomiony.
Parametry
Jeśli używasz urządzeniewejściowego VR, CFrame ręka trzymająca kurzor/wskaźnik/sterownik.
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
DragStart
Wystrzeliwuje, gdy użytkownik zaczyna przeciągać obiekt.
Parametry
Rama trafień promienia kurora, który rozpoczął przeciąganie.
Część, która została uderzona przez promień kurora, który zainicjował przeciąganie.
Jeśli używasz urządzeniewejściowego VR, CFrame ręka trzymająca kurzor/wskaźnik/sterownik.
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.