Poruszające się obiekty to obiekty, które poruszają się wzdłuż jednej lub więcej osi w przestrzeni 3D. Korzystając z wbudowanej mocy silnika symulacji Roblox, możesz sprawić, że obiekty będą się poruszać i wchodzić w interakcję z ich otoczeniem w sposób, który emuluje rzeczywiste zachowanie fizyczne, które jest znajome i intuicyjne dla graczy, takie jak grawitacja, aerodynamika i tarcie.
Korzystając z pliku .rbxl Poruszające się obiekty jako odniesienia, ten samouczek wyjaśnia, jak siły fizyczne wpływają na ruch liniowy w Studio i pokazuje różne techniki poruszania obiektami z punktu A do punktu B w twoich doświadczeniach z różnym zachowaniem ruchu, w tym wskazówki dotyczące:
- Użycia ograniczenia LinearVelocity, aby poruszyć całą assemblację z stałą liniową prędkością.
- Użycia PrismaticConstraint, aby ograniczyć assemblację do jednej osi i poruszać ją z stałą liniową prędkością w odniesieniu do punktu w przestrzeni 3D.
- Użycia metody ApplyImpulse, aby poruszyć assemblację z początkowym impulsem siły, aby assemblacja stopniowo zwalniała w miarę upływu czasu.
Ruch liniowy i siły fizyczne
Roblox Studio to silnik symulacji rzeczywistej, który emuluje zachowanie fizyczne w czasie rzeczywistym, więc aby przewidzieć, jak obiekty poruszające się liniowo mogą zachowywać się w doświadczeniach, ważne jest, aby mieć ogólne zrozumienie, jak obiekty poruszają się w rzeczywistości z ruchem liniowym.
Ruch liniowy to ruch wzdłuż osi. Na przykład, gdy blok ma ruch liniowy, porusza się wzdłuż ustalonej osi.

Ruch liniowy nie może istnieć bez zewnętrznych sił fizycznych popychających lub ciągnących obiekty do ruchu. Zgodnie z pierwszą zasadą ruchu Newtona, obiekty stacjonarne pozostają stacjonarne, a obiekty poruszające się pozostają w ruchu z stałą prędkością, chyba że działają na nie zewnętrzne siły. Na przykład, blok stacjonarny pozostaje w miejscu, chyba że fizyczna siła, taka jak wiatr, popchnie go w ruch.
Siła to miara kierunku i wielkości fizycznego pchnięcia lub ciągu, które powoduje zmianę liniowej prędkości obiektów wzdłuż osi. Zmiana prędkości jest znana jako przyspieszenie. Ta koncepcja jest szczególnie ważna dla obiektów poruszających się w Studio; im większa siła, tym szybciej obiekty przyspieszają.
Dzieje się tak dlatego, że siła musi być większa niż jakiekolwiek siły fizyczne popychające w stronę przeciwną obiektu, takie jak grawitacja czy tarcie. Na przykład, jeśli umieścisz blok na metalowej płycie, fizyczna siła wiatru musi pokonać siłę tarcia od metalowej płyty, aby kontynuować przyspieszanie bloku. Jeśli siła wiatru nie jest znacznie większa niż tarcie od metalowej płyty, blok przyspiesza, ale znacznie wolniej niż w poprzednim przykładzie.

Liniowa prędkość to miara ruchu obiektu lub jak szybko obiekt zmienia swoją pozycję wzdłuż osi w określonym czasie. Studio mierzy liniową prędkość zgodnie z tym, ile studów obiekt przemieszcza w ciągu sekundy. Study są podstawowymi jednostkami fizycznymi Roblox do pomiaru długości, a każdy stud odpowiada około 28 cm w rzeczywistości.

Zrozumienie liniowej prędkości jest ważne przy projektowaniu rozgrywki w twoich doświadczeniach, ponieważ pomaga określić, ile siły potrzebujesz, aby osiągnąć określoną prędkość dla poruszających się obiektów. Na przykład, gdy chcesz popychać obiekty w górę, ważne jest, aby zastanowić się, jak musisz dostosować swoją siłę, aby pokonać grawitację w środowisku, aby obiekty poruszały się dokładnie.
Następujące sekcje zagłębiają się w te koncepcje, gdy uczysz się, jak poruszać obiektami z stałą lub początkową liniową prędkością, z niezbędną siłą, aby pokonać wszelkie przeciwdziałające siły fizyczne w otoczeniu. Gdy będziesz przeglądać te koncepcje fizyczne z nadchodzącymi technikami, będziesz mógł dokładniej przewidzieć, jak dostosować wartości właściwości, aby osiągnąć wszelkie idealne zachowania ruchu liniowego w Studio.
Utrzymanie stałej liniowej prędkości
Aby obiekt mógł osiągnąć i utrzymać stałą liniową prędkość, potrzebuje siły, aby pokonać wszelkie przeciwdziałające siły fizyczne, które albo zwalniają liniową prędkość obiektu, albo powodują, że obiekt pozostaje stacjonarny. Na przykład, jeśli chcesz, aby obiekt miał liniową prędkość [0, 12, 0] w Studio, potrzebujesz wystarczającej siły, aby obiekt osiągnął i utrzymał 12 studów na sekundę wzdłuż osi Y w swoim otoczeniu.
Ilość siły potrzebnej nie tylko zależy od przeciwdziałających sił fizycznych w samym środowisku, takich jak grawitacja i tarcie, ale także od samego obiektu. Na przykład, jeśli masz dwa obiekty o tym samym kształcie, które poruszają się wzdłuż tej samej osi, obiekt o większej masie wymaga więcej siły, aby osiągnąć to samo przyspieszenie liniowe.
Następne podsekcje używają assemblacji różnych kształtów i rozmiarów, aby nauczyć cię, jak poruszać całym obiektem lub tylko częścią obiektu z stałą liniową prędkością. Eksperymentując z różnymi wartościami właściwości, nauczysz się oszacowywać maksymalną ilość siły, której potrzebujesz dla assemblacji w swoich własnych doświadczeniach.
Użyj ograniczeń LinearVelocity
Obiekty LinearVelocity to rodzaj ograniczeń popychających, które stosują siłę na całą assemblację, aby utrzymać stałą liniową prędkość. Poprzez niezablokowanie pozycji assemblacji wzdłuż osi podczas jej ruchu, assemblacja jest wolna do obracania się w trakcie kolizji z innymi obiektami w przestrzeni 3D. Tego typu ruch prowadzi do zaskakujących scenariuszy gry, które są trudniejsze do przewidzenia dla graczy.
Aby rozpocząć ruch assemblacji, ograniczenie LinearVelocity musi znać:
- Punkt i dodatni lub ujemny kierunek, w którym należy zastosować siłę.
- Ilość studów, które chcesz, aby assemblacja poruszała się na sekundę.
- Maksymalną ilość siły, jaką silnik może zastosować, aby assemblacja osiągnęła stałą liniową prędkość.
Aby zaprezentować ten proces, skonfigurujesz lilijkę z załącznikiem, do którego odnosi się ograniczenie LinearVelocity, aby poruszać lilijką w tempie 15 studów na sekundę wzdłuż ujemnej osi X świata z stałą liniową prędkością.

Dodaj załącznik
Możesz określić punkt, w którym stosuje się siłę, dodając obiekt Attachment do assemblacji, a następnie konfigurując położenie załącznika w przestrzeni 3D. Przykładowe doświadczenie Poruszające się obiekty umieszcza załącznik w centrum lilijki, aby ograniczenie mogło poruszać siatkę z załącznika wzdłuż określonej osi.
Załączniki zawierają wizualne pomoce, które pomagają wizualizować ich osie ruchu. Żółta strzałka oznacza główną oś załącznika, a pomarańczowa strzałka oznacza drugorzędną oś załącznika. Chociaż żadna z osi ruchu nie wpływa na ruch lilijki w krokach tej techniki, ważne jest, aby zrozumieć te wizualne pomoce dla przyszłego odniesienia, ponieważ mogą pomóc w określaniu idealnych zachowań dla różnych typów ograniczeń, takich jak PrismaticConstraint w następnej technice.

Aby dodać załącznik:
W oknie Explorer rozwiń folder LinearVelocityExample, a następnie rozwiń model LilyPad_DIY.
Wstaw załącznik do siatki Pad.
- Najedź na siatkę i kliknij przycisk ⊕. Wyświetli się menu kontekstowe.
- Z menu wstaw Attachment. Załącznik wyświetla się w centrum części.
- Zmień nazwę załącznika na MoveAttachment.

Skonfiguruj ograniczenie
Teraz, gdy twoja siatka ma ustalony punkt do poruszania lilijką, możesz skonfigurować właściwości ograniczenia LinearVelocity, aby określić kierunek i wielkość dla stałej liniowej prędkości, ilość studów, które chcesz, aby siatka poruszała się na sekundę, oraz maksymalną ilość siły, jaką silnik może zastosować dla siatki, aby osiągnęła stałą liniową prędkość.
Przykładowe doświadczenie Poruszające się obiekty stosuje do 5000 Rowtonów stałej siły, aby poruszyć lilijką 15 studów na sekundę wzdłuż ujemnej osi X świata z stałą liniową prędkością. Rowtony są podstawowymi jednostkami fizycznymi Roblox do mierzenia siły. Aby odwołać się do jednostek fizycznych Roblox i jak przekształcają się na jednostki metryczne, zobacz Jednostki Roblox.
Aby skonfigurować ograniczenie LinearVelocity:
Aby uczynić ograniczenie widocznym w widoku, abyś mógł odwołać się do jego kierunku liniowego, włącz Pokaż szczegóły ograniczenia z menu Widok w Studio.
Wstaw ograniczenie LinearVelocity do siatki Pad.
- W oknie Explorer najedź na siatkę, a następnie kliknij ikonę ⊕. Wyświetli się menu kontekstowe.
- Z menu kontekstowego wstaw LinearVelocity.
Przypisz załącznik siatki do nowego ograniczenia.
- W oknie Explorer wybierz ograniczenie.
- W oknie Właściwości,
- Ustaw Attachment0 na MoveAttachment.
- Ustaw MaxForce na 5000, aby zastosować do 5000 Rowtonów stałej siły w celu osiągnięcia docelowej prędkości liniowej.
- Utrzymuj RelativeTo na World, aby poruszać lilijką w odniesieniu do pozycji i orientacji świata.
- Ustaw VelocityConstraint na Line, aby ograniczyć siłę wzdłuż linii od załącznika.
- Ustaw LineDirection na -1, 0, 0, aby poruszać lilijką wzdłuż ujemnej osi X świata. Zauważ, że jeśli ustawisz tę właściwość na 1, 0, 0, lilijka poruszy się wzdłuż dodatniej osi X świata.
- Ustaw LineVelocity na 15, aby poruszać lilijką 15 studów na sekundę.

Zweryfikuj, że ilość siły, którą ustawiłeś, porusza siatkę 15 studów na sekundę wzdłuż ujemnej osi X świata.
Wybierz tryb symulacji Uruchom z rozwijanego menu mezzaniny i kliknij przycisk Graj, aby rozpocząć. Studio symuluje doświadczenie w aktualnej pozycji kamery bez twojej postaci w przestrzeni 3D.

Użyj ograniczeń PrismaticConstraint
Obiekty PrismaticConstraint to rodzaj ograniczeń mechanicznych, które tworzą sztywny staw między dwoma załącznikami, pozwalając ich rodzicom assemblacjom poruszać się wzdłuż jednej osi względem siebie. Poprzez zablokowanie pozycji obu assemblacji do jednej osi, każda assemblacja może obracać się tylko wtedy, gdy obracają się razem w tym samym kierunku.
Tego typu ruch prowadzi do stabilnych scenariuszy gry, które są łatwiejsze do przewidzenia dla graczy. Na przykład, przykładowe doświadczenie Poruszające się obiekty używa obiektów PrismaticConstraint, aby poruszać platformami z kłodami, z których gracze mogą ostrożnie przechodzić przez ogromną rzekę.
Gdy ustawi się PrismaticConstraint.ActuatorType na Silnik, to ograniczenie stosuje siłę na dwa załączniki z celem, aby te załączniki osiągnęły i utrzymały stałą liniową prędkość. Jeśli zablokujesz jedną z rodzicielskich assemblacji załącznika, siła nadal będzie poruszać odblokowaną assemblację z stałą liniową prędkością, podczas gdy zablokowana assemblacja pozostanie stacjonarna.
Aby rozpocząć ruch assemblacji, ograniczenie PrismaticConstraint musi znać:
- Punkt i dodatni lub ujemny kierunek, w którym należy zastosować siłę.
- Ilość studów, które chcesz, aby załączniki poruszały się na sekundę.
- Maksymalną ilość siły, jaką silnik może zastosować dla załączników i ich rodzicielskich assemblacji, aby osiągnęły stałą liniową prędkość.
Aby zaprezentować ten proces, skonfigurujesz assemblację kłody z dwoma obiektami, które mają dzieci-załączniki, do których odnosi się PrismaticConstraint, aby poruszyć kłodę o 40 studów na sekundę wzdłuż ujemnej osi X świata z stałą liniową prędkością.

Skonfiguruj załączniki
Możesz określić kierunek poruszania się konkretnego obiektu w assemblacji, dodając dwa obiekty Attachment do assemblacji, a następnie konfigurując ich orientację i ustawienie w przestrzeni 3D. Przykładowe doświadczenie Poruszające się obiekty wyrównuje dwa załączniki wzdłuż osi X świata w pobliżu pozycji, gdzie niezablokowana kłoda nakłada się na zablokowaną część, a także ustawia główną oś każdego załącznika, aby wskazywała na ujemną oś X świata.
Gdy skonfigurujesz swoje ograniczenie PrismaticConstraint w następnej sekcji, poruszy to kłodę względem zablokowanej części. Innymi słowy, kłoda będzie oddalać się od nieprzemieszczającej się części, która nie może się poruszać, ponieważ jest zablokowana w przestrzeni 3D.
Aby skonfigurować załączniki dla ograniczenia pryzmatycznego:
W oknie Explorer rozwiń folder PrismaticConstraintExample, a następnie rozwiń model Log_DIY.
Wstaw załącznik do siatki Log.
- Najedź na siatkę i kliknij przycisk ⊕. Wyświetli się menu kontekstowe.
- Z menu wstaw Attachment. Załącznik wyświetla się w centrum części.
- Zmień nazwę załącznika na LogAttachment.

Wykonując tę samą procedurę, wstaw załącznik do części Anchor, a następnie zmień nazwę załącznika na AnchorAttachment.

Używając narzędzia View Selector jako odniesienia dla współrzędnych świata, obróć LogAttachment i AnchorAttachment, aż każda oś główna załącznika będzie wskazywała na ujemną oś X świata.

Przesuń AnchorAttachment, aby oba załączniki były wyrównane wzdłuż osi X świata.

Skonfiguruj ograniczenie
Teraz, gdy twoje załączniki są wyrównane na tej samej osi i wskazują w tym samym kierunku, w którym chcesz, aby kłoda się poruszała, możesz skonfigurować właściwości ograniczenia PrismaticConstraint, aby określić, czy stosować docelową stałą liniową prędkość w dodatnim lub ujemnym kierunku każdej głównej osi załączników, ilość studów, które chcesz, aby załączniki poruszały się na sekundę, oraz maksymalną ilość siły, jaką silnik może zastosować, aby kłoda osiągnęła stałą liniową prędkość.
Podczas gdy możesz wybrać różne wartości do swoich własnych zastosowań, przykładowe doświadczenie Poruszające się obiekty stosuje do 50000 Rowtonów stałej siły, aby poruszyć załączniki o 40 radianów na sekundę wzdłuż ujemnej osi X świata z stałą liniową prędkością. Jednak ponieważ załącznik zakotwiczony znajduje się w zakotwiczonej części, tylko załącznik kłody może się poruszać.
Aby skonfigurować ograniczenie pryzmatyczne:
Wstaw obiekt PrismaticConstraint do siatki Log.
- W oknie Explorer najedź na siatkę, a następnie kliknij ikonę ⊕. Wyświetli się menu kontekstowe.
- Z menu kontekstowego wstaw PrismaticConstraint.
Przypisz załączniki kłody do nowego ograniczenia, aby kłoda poruszała się w odniesieniu do zakotwiczonej części bloku.
- W oknie Explorer wybierz ograniczenie.
- W oknie Właściwości,
- Ustaw Attachment0 na AnchorAttachment.
- Ustaw Attachment1 na LogAttachment. Ograniczenie wyświetla się w widoku.

W oknie Explorer wybierz ograniczenie, a następnie w oknie Właściwości:
- Ustaw ActuatorType na Motor. Nowe pola właściwości będą widoczne.
- Ustaw MotorMaxForce na 50000, aby zastosować do 50000 Rowtonów stałej siły w celu osiągnięcia docelowej prędkości liniowej.
- Ustaw Velocity na 40, aby poruszyć kłodę o 40 studów na sekundę.

Zweryfikuj, że ilość siły, którą ustawiłeś, porusza kłodę 40 studów na sekundę wzdłuż ujemnej osi X świata.
Wybierz tryb symulacji Uruchom z rozwijanego menu mezzaniny i kliknij przycisk Graj, aby rozpocząć. Studio symuluje doświadczenie w aktualnej pozycji kamery bez twojej postaci w przestrzeni 3D.

Zastosuj początkową liniową siłę
Innym sposobem zmiany liniowej prędkości obiektu jest zastosowanie impulsu siły. Po impulsie siły, obiekt albo zwalnia, aż stanie się stacjonarny, jeśli istnieje siła przeciwdziałająca, taka jak tarcie, albo pozostaje w ruchu z stałą liniową prędkością, jeśli nie ma żadnych sił przeciwdziałających.
Ta technika jest przydatna do poruszania obiektami po znaczącym wydarzeniu w grze, takim jak eksplozja lub silna kolizja, ponieważ zapewnia graczom natychmiastową reakcję. Aby to zilustrować, w następnej podsekcji nauczysz się, jak wystrzelić postać gracza w górę w kierunku nieba, gdy koliduje z platformą skoku, stosując początkowy impuls, który możesz dostosować do nowych wartości, aby spełnić własne wymagania dotyczące rozgrywki.
Użyj ApplyImpulse
Metoda ApplyImpulse stosuje siłę na całą assemblację, aby uzyskać początkową liniową prędkość przed zwolnieniem do zatrzymania, gdy znajdują się opozycyjne siły. Aby rozpocząć ruch assemblacji, metoda musi znać:
- Assemblację do poruszenia.
- Oś, na którą należy zastosować siłę, aby osiągnąć początkową liniową prędkość.
- Ilość siły do zastosowania do każdej osi.
Możesz zdefiniować wszystkie te wartości w skrypcie. Na przykład, przykładowy skrypt definiuje assemblację do poruszenia jako obiekt Humanoid postaci gracza, a następnie stosuje impuls siły wynoszący 2500 Rowton-sekundy, aby wystrzelić gracza w górę na dodatniej osi Y świata. Zauważ, że postacie graczy mają różne ilości masy, więc może być konieczne zwiększenie i zrównoważenie tej siły, aby wystrzelić każdego gracza, nie wystrzelając postaci graczy o mniejszej masie zbyt wysoko.
Aby poruszyć assemblację za pomocą ApplyImpulse:
W oknie Explorer rozwiń folder ApplyImpulseExample, a następnie rozwiń model JumpPad_DIY.
Wstaw skrypt do części JumpPad.
- Najedź na część i kliknij przycisk ⊕. Wyświetli się menu kontekstowe.
- Z menu wstaw Skrypt. Załącznik wyświetli się w centrum części.
- Zmień nazwę skryptu na JumpScript.
Zastąp domyślny kod następującym kodem:
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)