Większość sesji Roblox jest rozgrywana na urządzeniach mobilnych, dlatego ważne jest, aby wziąć pod uwagę orientację urządzenia oraz inne czynniki wieloplatformowe, projektując doświadczenie dla szerokiej publiczności.
Aby uprościć wejścia wieloplatformowe, w tym interakcję gracza z wirtualnymi przyciskami, Roblox oferuje System Akcji Wejścia, aby zdefiniować akcje takie jak "skok", "bieganie" czy "strzał" i skonfigurować więzi dla wielu wejść sprzętowych, aby napędzać te akcje.
Roblox obsługuje również natywne funkcje mobilne, takie jak sprzężenie zwrotne haptyczne, gesty dotykowe, takie jak TouchSwipe i TouchPinch, lub funkcję akcelerometru i żyroskopu na urządzeniach AccelerometerEnabled i GyroscopeEnabled.
Wykrywanie typu wejścia
W wieloplatformowym rozwoju ważne jest, aby określić i zareagować na typ PreferredInput, którego używa gracz, zazwyczaj w celu zapewnienia, że elementy UI takie jak przyciski i menu na ekranie działają elegancko i wspierają interakcję na różnych urządzeniach.
Na przykład, urządzenie z obsługą dotyku zakłada, że dotyk jest domyślnym wejściem i że mogą się pojawić przyciski dotykowe dla akcji, ale gracz może zdecydować się na podłączenie kontrolera Bluetooth. W takim przypadku dotyk pozostaje ważnym wejściem, ale możesz założyć, że gracz chce przełączyć się na podłączony kontroler jako główny typ wejścia i ewentualnie użyć dotyku jako zapasowego wejścia dla UI na ekranie.
Zobacz wykrywanie typu wejścia po więcej informacji.
Orientacja urządzenia
Domyślnie, doświadczenia Roblox działają w trybie poziomym, co pozwala na przełączanie między orientacją poziomą "lewo" i poziomą "prawo" w miarę obracania urządzenia przez gracza. Jednak doświadczenia mogą być zablokowane na konkretną orientację, jeśli zajdzie taka potrzeba.
Istnieje pięć różnych trybów orientacji, w tym dwa oparte na czujnikach i trzy zablokowane moduły.¹ Każdy z nich może być ustawiony jako domyślna orientacja poprzez StarterGui.ScreenOrientation, dostępne przez okno Właściwości w Studio.
| Tryby czujników | |
|---|---|
| LandscapeSensor | Domyślne ustawienie Roblox, w którym doświadczenie zawsze wyświetla się w trybie poziomym (brak trybu pionowego) i urządzenie wykrywa swoją fizyczną orientację, aby zapewnić, że widok doświadczenia zawsze jest skierowany w górę. |
| Sensor | Urządzenie wykrywa swoją fizyczną orientację, aby zapewnić, że widok doświadczenia zawsze jest skierowany w górę, przełączając się między trybem poziomym a pionowym w razie potrzeby. |
| Zablokowane tryby | |
| LandscapeLeft | Na urządzeniach z wirtualnym przyciskiem domowym/nawigacyjnym, jego dotykowy obszar znajduje się na dolnej części ekranu. Na urządzeniach z fizycznym przyciskiem domowym, przycisk domowy znajduje się po lewej stronie ekranu. |
| LandscapeRight | Na urządzeniach z wirtualnym przyciskiem domowym/nawigacyjnym, jego dotykowy obszar znajduje się na dolnej części ekranu. Na urządzeniach z fizycznym przyciskiem domowym, przycisk domowy znajduje się po prawej stronie ekranu. |
| Portrait | Na urządzeniach z wirtualnym przyciskiem domowym/nawigacyjnym, jego dotykowy obszar znajduje się na dolnej części ekranu. Na urządzeniach z fizycznym przyciskiem domowym, przycisk domowy znajduje się poniżej ekranu. |
Poza domyślną właściwością StarterGui.ScreenOrientation, można zmienić orientację podczas rozgrywki przez PlayerGui.ScreenOrientation. Może to być przydatne, gdy doświadczenie musi wymusić określoną orientację, na przykład blokując widok na Portrait dla mini-gry.
Poniższy kod w LocalScript ustawia orientację ekranu na pionową po krótkim opóźnieniu:
LocalScript - Zmień orientację ekranu na pionowąlocal Players = game:GetService("Players")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuitask.wait(5)playerGui.ScreenOrientation = Enum.ScreenOrientation.Portrait
Na koniec, możesz wykryć zmiany orientacji ekranu podczas rozgrywki, nasłuchując zmian wartości na właściwości PlayerGui.CurrentScreenOrientation.
LocalScript - Wykrywanie zmian orientacji ekranu
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local function onOrientationChange()
print("Orientacja zmieniła się na", playerGui.ScreenOrientation)
end
playerGui:GetPropertyChangedSignal("ScreenOrientation"):Connect(onOrientationChange)
Sprzężenie zwrotne haptyczne
Większość urządzeń mobilnych ma wbudowane silniki zapewniające sprzężenie zwrotne haptyczne. Dodanie wibracji i drgań może znacznie poprawić doświadczenie gracza i dostarczyć subtelne sprzężenie zwrotne poza wizualne lub dźwiękowe.
Roblox obsługuje haptykę dla urządzeń zdolnych do haptyki, w tym większości urządzeń iPhone, Pixel i Samsung Galaxy. Sprzężenie zwrotne haptyczne jest zarządzane za pomocą instancji HapticEffect, które można ustawić na konkretny Type taki jak GameplayCollision lub UIClick.
Gdy HapticEffect jest na miejscu, możesz go zainicjować za pomocą metody Play(), na przykład:
local Workspace = game:GetService("Workspace")local effect = Instance.new("HapticEffect")effect.Type = Enum.HapticEffectType.GameplayExplosioneffect.Parent = Workspace-- Odtwórz efekt haptycznyeffect:Play()