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 wokół i wiele więcej. Key cechy to:

  • Umieść DragDetector pod dowolnym BasePart lub Model, aby uczynić go przeciągniętym za pośrednictwem wszystkich wejść (mysz, dotykanie, gamepad i VR), wszystko bez pojedynczej linii kodu.

  • Wybierz z kilku opcji DragStyle, zdefiniuj, jak reaguje obiekt na ruch poprzez ResponseStyle i opcjonalnie zastosuj ograniczenia lub ograniczenia ruchu.

  • Skrypty mogą reagować na manipulację przeciąganymi obiektami, aby zwiększyć poziom światła w pokoju lub podjąć logiczne decyzje, takie jak dostosowanie poziomu światła w pokoju w zależności od przełącznika świetlnego.

  • Gracze mogą manipulować zaczepionymi częściami lub modelami, a zostaną dokładnie tam, gdzie je umieścili po uwolnieniu.

  • Class.DragDetector|DragDetectors pracy w Studio tak długo, jak jesteś nie używając narzędzi Wybierz , 0>Przenieś0>, 3>Skala3> lub DragDetectors6>, aby ułatwić testowanie i dostosowywanie przeciąganych obiektów podczas edytowania.

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ę kursora do wyświetlenia, gdy myszka jest aktywna nad rodzicem tego DragDetector . Jeśli ta właściwość pozostanie pusta, wykryjnik użyje domyślnej ikona.

Aby zmienić aktywowany ikona, ustaw ten właściwość na ID zasobu obrazu, którego chcesz użyć.

ApplyAtCenterOfMass

Odczyt równoległy

Gdy fałszywy (domyślny), siła ograniczenia jest zastosowany w momencie, w którym użytkownik kliknie. Gdy prawdziwy, siła jest zastosowana w centrum masy obiektu. Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i obiekt rodzic nie jest przyczepiony.

Bez replikacji
Odczyt równoległy

Główną osią ruchu, wyrażoną w odniesieniu do referencyjnej ramy, dla DragStyle z Enum.DragDetectorDragStyle.TranslateLine , kier

DragFrame

Odczyt równoległy

Jeśli ReferenceInstance jest ustawiać, CFrame pivot w odniesieniu do ramy odniesienia; w przeciwnym wypadku CFrame pivot w odniesieniu do ramy odniesienia w początkowej fazie przeciągania.

Odczyt równoległy

Paradigma używana do generowania proponowanego ruchu, z danej serii promieni kursołu. Zobacz Enum.DragDetectorDragStyle dla opcji.

Enabled

Odczyt równoległy

Jeśli prawda, DragDetector reaguje na wejście użytkownika; jeśli fałszywy, nie reaguje.

GamepadModeSwitchKeyCode

Odczyt równoległy

Podczas wpisywania gamepad, Enum.KeyCode dla ustawienia trybu ruchu drugorzędnego. Ma zastosowanie tylko w przypadku, gdy wykrywacz przeciwdziałania DragStyle ma tryb ruchu pierwotnego i wtórnego.

KeyboardModeSwitchKeyCode

Odczyt równoległy

Podczas wpisywania klawiatury, Enum.KeyCode dla włączania trybu ruchu drugorzędnego. Ma to zastosowanie tylko w przypadku, gdy wykrywacz przeciwkości ruchu ma tryb ruchu głównego i tryb ruchu drugorzędnego.

MaxDragAngle

Odczyt równoległy

Jeśli jest to większe niż MinDragAngle, tłumaczenie zostanie ucięte w tej zasięgu.

To nie jest ograniczeniem; po prostu zapobiega próbom wykrywaczy ruchu w celu pozostania w ramach. Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do wykrywacza.

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

MaxDragTranslation

Odczyt równoległy

W każdym wymiarze, jeśli jest to większe niż MinDragTranslation , tłumaczenie zostanie ucięte w tej gamie.

To nie jest ograniczeniem; po prostu zapobiega próbom wykrywaczy ruchu w celu pozostania w ramach. Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do wykrywacza.

MaxForce

Odczyt równoległy

Maksymalna siła zastosowana dla obiektu, aby osiągnąć jego cel. Skorzystać tylko jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i obiekt rodzic nie jest związany.

MaxTorque

Odczyt równoległy

Maksymalny moment obrotowy zastosowany dla obiektu, aby osiągnąć jego cel. Skorzystać tylko wtedy, gdy ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i obiekt rodzic nie jest związany.

MinDragAngle

Odczyt równoległy

Jeśli jest to mniej niż MaxDragAngle , tłumaczenie zostanie sklejone w tej zasięgu.

To nie jest ograniczeniem; po prostu zapobiega próbom wykrywaczy ruchu w celu pozostania w ramach. Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do wykrywacza.

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

MinDragTranslation

Odczyt równoległy

W każdym wymiarze, jeśli jest to mniejsze niż MaxDragTranslation , tłumaczenie zostanie ucięte w tej gamie.

To nie jest ograniczeniem; po prostu zapobiega próbom wykrywaczy ruchu w celu pozostania w ramach. Zobacz AddConstraintFunction(), aby dodać niestandardowe ograniczenie do wykrywacza.

Orientation

Odczyt równoległy

Określa rotację YXZ w przestrzeniach ruchu w stosunku do referencji (nie zmienia orientacji samej referencji). Linearne tłumienie i obroty osiowe będą na tej osi Y i planary tłumienie w przestrzeniach X . zmiany tej wartości automatycznie aktualizuje 1> Class

Odczyt równoległy

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

ReferenceInstance

Odczyt równoległy

Instancja, która ma CFrame na ramę odniesienia dla wykrywacza przeciągnięcia. DragFrame jest wyrażony w odniesieniu do tej CFrame, która może być odzyskana za pomocą metody 1> Class.DragDetector:GetReferenceFrame()|Get Reference Frame1>.

Jeśli ta instancia jest PVInstance , to rama referencyjna będzie jej pivot; jeśli Attachment , to świat CFrame będzie oparty na pivotu detekтора przeciągnięcia 2> Class.BasePart

Odczyt równoległy

Gdy proponowany ruch zostanie obliczony i potencjalnie ograniczony, to jest to paradigma używana do przesuwania lub nie przesuwania obiektów zainteresowanych przez DragDetector. Zobacz Enum.DragDetectorResponseStyle dla opcji.

Responsiveness

Odczyt równoległy

Wyższe wartości sprawiają, że obiekt szybciej osiągnie cel. Tylko istotne, jeśli ResponseStyle jest Enum.DragDetectorResponseStyle.Physical i obiekt rodziczy jest niezakorzeniony.

RunLocally

Odczyt równoległy

Jeśli fałszywy (domyślny), klient wysyłuje zeskanowane sygnały ( DragStart , DragContinue , DragEnd ) na serwer, który przetwarza sygnały kursoра i dokonuje zmian w modelu danych, a następnie

Jeśli tak, to kliент przetwarza te sygnały sam i nie replikuje ich na serwer. Kliент LocalScripts może być używany do odpowiadania na te wydarzenia i RemoteEvents może być używany do wysyłania dowolnych zmian, które należy skopiować na serwer.

SecondaryAxis

Bez replikacji
Odczyt równoległy

Drugowy osi ruchu. Odnosi się do orientacji używając tego samego paradygmatu co Attachments .

TrackballRadialPullFactor

Odczyt równoległy

Gdy kurser jest poza trackball, DragDetector może zastosować rotację kulową, która zmienia kulę tak, jakby próbowała się zrolować w kierunku kursera. Ta właściwość jest mnożnikiem 0 do 1, aby dodać tę rotację jako wkład do całkowego. Tylko istotne, jeśli

TrackballRollFactor

Odczyt równoległy

Gdy kurser jest poza trackball, DragDetector może zastosować rotację kulową, która zmienia kulę tak, jakby była montowana na winylowej płycie obliczającej widok widownika. Ta właściwość jest mnożnikiem 0 do 1 dla dodania tej rotacji kulowej do całkowitego. Tylko istotne, je

VRSwitchKeyCode

Odczyt równoległy

Podczas wpisu VR, Enum.KeyCode dla ustawienia trybu ruchu drugorzędnego. Ma to zastosowanie tylko w przypadku, gdy wykrywacz przeciwdziałania DragStyle ma tryb ruchu pierwotnego i wtórnego.

WorldAxis

Bez replikacji
Odczyt równoległy

Wyrażony w przestrzeni świata Axis odnosi się do orientacji używając tej samej paradigmy co Attachments.

WorldSecondaryAxis

Bez replikacji
Odczyt równoległy

Wyrażony w przestrzeni świata SecondaryAxis odnosi się do orientacji używając tej samej paradigmy co Attachments.

Metody

AddConstraintFunction

Dodaje funkcję do modyfikacji lub ograniczenia proponowanej animacji. Funkcja odbiera wejście CFrame z proponowanej animacji i zwraca Datatype.CFrame z modyfikowanej lub niemodyfikowanej animacji. Zarównaj obie funkcje, które będą

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

Parametry

priority: number

Zamówienie priorytetu dla funkcji dodanych za pomocą tego metody. Wyższe wartości mają pierwszeństwo nad niższymi wartościami.

function: function

Funkcja do modyfikacji lub ograniczenia proponowanego ruchu. Ta funkcja odbiera wejście CFrame z proponowanego ruchu i zwraca Datatype.CFrame z modyfikowanego lub niemodyfikowanego ruchu, zarówno w odniesieniu do ramek referencyjnych.


Zwroty

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

GetReferenceFrame

Zwraca referencję CFrame w której wyrażono ruch; zobacz właściwość ReferenceInstance po więcej szczegółów.


Zwroty

Przykład CFrame w którym wyrażona jest ruch.

RestartDrag

void

Można to zrobić z kodu, aby ponownie uruchomić przeciąganie używając nowych parametrów, jeśli parametry takie jak DragStyle , Axis lub SecondaryAxis zmieniają.


Zwroty

void

SetDragStyleFunction

void

Przekazuje funkcję do użycia, jeśli i tylko jeśli DragStyle jest ustawiony na Enum.DragDetectorDragStyle.Scriptable . Funkcja ta jest wzywana w odpow

Jeśli funkcja zwraca nil , obiekt nie zostanie przesunięty. To jest użyteczne, jeśli skrypt jeszcze nie zebrał wszystkich informacji, które są niezbędne, aby dać poprawną odpowiedź, lub w przypadkach tymczasowych, w których chcesz, aby obiekt pozostał gdzie jest.

Parametry

function: function

Funkcja do monitorowania DragContinue sygnałów. Ta funkcja otrzymuje promień kursora świata sygnału i wyświetla CFrame zawierający pożądane położenie i orientację pivot w przestrzeni świata. Jeśli funkcja zwraca nil, obiekt nie zostanie przesunięty.


Zwroty

void

SetPermissionPolicyFunction

void

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 ustawienia interaktywności detektora. Ta funkcja akceptuje Player parametr do włączenia/wyłączenia detektora


Zwroty

void

Zdarzenia

DragContinue

Wyst?puje, gdy u?ytywaczka przedmiotu nadal przeciąga po nim po DragStart została uruchomiona.

Parametry

playerWhoDragged: Player

Class.Player, który inicjował przeciągnięcie poprzez DragStart i teraz kontynuuje przeciągnięcie.

cursorRay: Ray

Ray promieniujący z kursoра, skierowany w stronę sceny.

viewFrame: CFrame

CFrame z Camera użytkownika.

vrInputFrame: OptionalCoordinateFrame

Jeśli używać urządzenieVR, CFrame ręki trzymającej kursor/wskaźnik/sterownik.

isModeSwitchKeyDown: bool

Jeśli wykrywacz przeciągnięcia ma zarówno tryb ruchu głównego, jak i tryb ruchu wtórnego, ten parametr wskazuje, czy użytkownik nacisnął klawisz modyfikatora zdefiniowany poprzez Class.DragDetector.KeyboardModeSwitchKeyCode|KeyboardMode


DragEnd

Wystąpi, gdy użytkownik przestanie przeciągać obiekt.

Parametry

playerWhoDragged: Player

Class.Player, który inicjował przeciągnięcie poprzez DragStart i teraz go zakończył (z wersji) przeciągnięcia.


DragStart

Wystąpi, gdy użytkownik zacznie przeciągać obiekt.

Parametry

playerWhoDragged: Player

Player który inicjował przeciągnięcie.

cursorRay: Ray

Ray promieniujący z kursoра, skierowany w stronę sceny.

viewFrame: CFrame

CFrame z Camera użytkownika.

hitFrame: CFrame

Rama trafienia kursora raycast, która inicjowała przeciągnięcie.

clickedPart: BasePart

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

vrInputFrame: OptionalCoordinateFrame

Jeśli używać urządzenieVR, CFrame ręki trzymającej kursor/wskaźnik/sterownik.

isModeSwitchKeyDown: bool

Jeśli wykrywacz przeciągnięcia ma zarówno tryb ruchu głównego, jak i tryb ruchu wtórnego, ten parametr wskazuje, czy użytkownik nacisnął klawisz modyfikatora zdefiniowany poprzez Class.DragDetector.KeyboardModeSwitchKeyCode|KeyboardMode