Phần lớn các phiên chơi Roblox được thực hiện trên các thiết bị di động, vì vậy điều quan trọng là phải xem xét hướng thiết bị di động và các yếu tố đa nền tảng khác khi thiết kế một trò chơi cho nhiều khán giả.
Để đơn giản hóa các đầu vào đa nền tảng, bao gồm tương tác của người chơi với các nút ảo, Roblox cung cấp Hệ thống Hành động Nhập liệu để định nghĩa hành động như "nhảy," "chạy nhanh," hoặc "bắn" và thiết lập ràng buộc cho nhiều đầu vào phần cứng để thực hiện những hành động đó.
Roblox cũng hỗ trợ các tính năng di động gốc như phản hồi rung, các cử chỉ cảm ứng như TouchSwipe và TouchPinch, hoặc chức năng cảm biến gia tốc và con quay hồi chuyển trên các thiết bị AccelerometerEnabled và GyroscopeEnabled.
Phát hiện loại nhập liệu
Trong phát triển đa nền tảng, điều quan trọng là bạn xác định và phản hồi loại PreferredInput mà người chơi đang sử dụng, thường là để đảm bảo rằng các phần tử giao diện người dùng như nút và menu trên màn hình hoạt động một cách thanh lịch và hỗ trợ tương tác giữa các thiết bị.
Ví dụ, một thiết bị hỗ trợ cảm ứng giả định cảm ứng là đầu vào mặc định và rằng các nút cảm ứng có thể xuất hiện cho các hành động, nhưng một người chơi có thể chọn kết nối một tay cầm bluetooth. Trong trường hợp này, cảm ứng vẫn là một đầu vào hợp lệ, nhưng bạn có thể giả định rằng người chơi muốn chuyển sang tay cầm đã kết nối là loại đầu vào chính và có thể sử dụng cảm ứng như một đầu vào dự phòng cho giao diện người dùng trên màn hình.
Xem phát hiện loại nhập liệu để biết thêm thông tin.
Hướng thiết bị
Theo mặc định, các trò chơi Roblox chạy ở chế độ landscape, cho phép trò chơi chuyển đổi giữa "trái" và "phải" khi thiết bị của người chơi xoay. Tuy nhiên, các trò chơi có thể bị khóa ở một hướng cụ thể nếu muốn.
Có năm chế độ hướng khác nhau, bao gồm hai chế độ dựa trên cảm biến và ba chế độ bị khóa.¹ Mỗi chế độ này có thể được thiết lập làm hướng mặc định thông qua StarterGui.ScreenOrientation, có thể truy cập qua cửa sổ Thuộc tính của Studio.
| Chế độ cảm biến | |
|---|---|
| LandscapeSensor | Cài đặt mặc định của Roblox mà trong đó trò chơi luôn xuất hiện ở chế độ landscape (không có chế độ portrait) và thiết bị phát hiện hướng vật lý của nó để đảm bảo rằng góc nhìn trò chơi luôn được hướng lên. |
| Sensor | Thiết bị phát hiện hướng vật lý của nó để đảm bảo rằng góc nhìn trò chơi luôn được hướng lên, chuyển đổi giữa chế độ landscape và portrait khi cần thiết. |
| Chế độ bị khóa | |
| LandscapeLeft | Trên các thiết bị có thanh điều hướng ảo, vùng cảm ứng của nó nằm ở đáy màn hình. Trên các thiết bị có nút home vật lý, nút home nằm ở bên trái màn hình. |
| LandscapeRight | Trên các thiết bị có thanh điều hướng ảo, vùng cảm ứng của nó nằm ở đáy màn hình. Trên các thiết bị có nút home vật lý, nút home nằm ở bên phải màn hình. |
| Portrait | Trên các thiết bị có thanh điều hướng ảo, vùng cảm ứng của nó nằm ở đáy màn hình. Trên các thiết bị có nút home vật lý, nút home nằm ở dưới màn hình. |
Ngoài thuộc tính mặc định StarterGui.ScreenOrientation, bạn có thể thay đổi hướng trong quá trình chơi thông qua PlayerGui.ScreenOrientation. Điều này có thể hữu ích khi một trò chơi cần thực thi một hướng, chẳng hạn như khóa góc nhìn vào Portrait cho một mini game.
Đoạn mã sau trong một LocalScript thiết lập hướng màn hình thành portrait sau một khoảng thời gian ngắn:
LocalScript - Thay đổi Hướng Màn hình thành Portraitlocal Players = game:GetService("Players")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuitask.wait(5)playerGui.ScreenOrientation = Enum.ScreenOrientation.Portrait
Cuối cùng, bạn có thể phát hiện các thay đổi về hướng màn hình trong quá trình chơi bằng cách lắng nghe các thay đổi giá trị trên thuộc tính PlayerGui.CurrentScreenOrientation.
LocalScript - Phát hiện Thay đổi Hướng Màn hình
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local function onOrientationChange()
print("Hướng đã thay đổi thành", playerGui.ScreenOrientation)
end
playerGui:GetPropertyChangedSignal("ScreenOrientation"):Connect(onOrientationChange)
Phản hồi rung
Hầu hết các thiết bị di động đều có động cơ tích hợp để cung cấp phản hồi rung. Thêm rung và dao động có thể làm nâng cao trải nghiệm của người chơi và cung cấp phản hồi tinh tế hơn ngoài hình ảnh hoặc âm thanh.
Roblox hỗ trợ cảm giác rung cho các thiết bị có khả năng rung bao gồm hầu hết các thiết bị iPhone, Pixel và Samsung Galaxy. Phản hồi rung được quản lý thông qua các phiên bản HapticEffect có thể được thiết lập thành một Type cụ thể như GameplayCollision hoặc UIClick.
Khi một HapticEffect được thiết lập, bạn có thể khởi động nó thông qua phương thức Play(), chẳng hạn như:
local Workspace = game:GetService("Workspace")local effect = Instance.new("HapticEffect")effect.Type = Enum.HapticEffectType.GameplayExplosioneffect.Parent = Workspace-- Phát hiệu ứng rungeffect:Play()