Robloxのセッションの大部分はモバイルデバイスでプレイされるため、広範なオーディエンス向けにゲームを設計する際には、モバイルの デバイスの向き やその他の クロスプラットフォーム の要素を考慮することが重要です。
クロスプラットフォームの入力を簡素化するために、プレイヤーが仮想ボタンと対話する際の入力を含め、Robloxはアクション(例えば「ジャンプ」、「スプリント」、「シュート」など)を定義し、それらのアクションを駆動するために複数のハードウェア入力のバインディングを設定するための 入力アクションシステム を提供しています。
Robloxは、ハプティックフィードバック、TouchSwipe や TouchPinch などのタッチジェスチャー、または AccelerometerEnabled や GyroscopeEnabled デバイスにおける加速度センサーやジャイロスコープの機能をサポートしています。
入力タイプの検出
クロスプラットフォーム開発において、プレイヤーが使用している PreferredInput タイプを特定し、それに応じて反応することが重要です。これは通常、UI 要素(画面上のボタンやメニューなど)がエレガントに機能し、デバイス間での対話をサポートすることを保証するために行われます。
例えば、タッチ対応のデバイスはタッチがデフォルトの入力であり、アクションのためのタッチボタンが表示されることが前提とされますが、プレイヤーがBluetoothゲームパッドを接続することもあります。この場合、タッチは有効な入力として残りますが、プレイヤーは接続されたゲームパッドを主要入力タイプとして使用し、画面上のUIのためのバックアップ入力としてタッチを使用することになると考えることができます。
詳細については、入力タイプの検出 を参照してください。
デバイスの向き
デフォルトでは、Robloxゲームは横向きモードで実行され、プレイヤーのデバイスが回転する際に横向き「左」と横向き「右」の間でゲームが切り替わります。ただし、必要に応じて特定の向きにロックすることもできます。
センサーに基づく2つのモードとロックされた3つのモードを含む、5つの異なる向きモードがあります。¹ これらはすべて、StarterGui.ScreenOrientation を介して、Studioの プロパティ ウィンドウからデフォルトの向きとして設定できます。
| センサーモード | |
|---|---|
| LandscapeSensor | ゲームが常に横向きモード(縦向きモードなし)で表示され、デバイスが物理的な向きを検出してゲームビューが常に上向きになるようにする、デフォルトのRoblox設定。 |
| Sensor | デバイスが物理的な向きを検出してゲームビューを常に上向きに保つために、必要に応じて横向きと縦向きの間を切り替えます。 |
| ロックモード | |
| LandscapeLeft | 仮想のホーム/ナビバーを持つデバイスでは、タッチ領域がディスプレイの下部にあります。物理的なホームボタンを持つデバイスでは、ホームボタンがディスプレイの左側にあります。 |
| LandscapeRight | 仮想のホーム/ナビバーを持つデバイスでは、タッチ領域がディスプレイの下部にあります。物理的なホームボタンを持つデバイスでは、ホームボタンがディスプレイの右側にあります。 |
| Portrait | 仮想のホーム/ナビバーを持つデバイスでは、タッチ領域がディスプレイの下部にあります。物理的なホームボタンを持つデバイスでは、ホームボタンがディスプレイの下にあります。 |
デフォルトの StarterGui.ScreenOrientation プロパティに加えて、ゲームプレイ中に PlayerGui.ScreenOrientation を通じて向きを変更することもできます。これは、ミニゲームのために Portrait に固定する必要がある場合などに便利です。
以下のコードは LocalScript 内で、短い遅延後に画面の向きを縦向きに変更します:
LocalScript - 画面の向きを縦向きに変更するlocal Players = game:GetService("Players")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuitask.wait(5)playerGui.ScreenOrientation = Enum.ScreenOrientation.Portrait
最後に、ゲームプレイ中に画面の向きの変更を検出するために、PlayerGui.CurrentScreenOrientation プロパティの値の変更にリスニングすることができます。
LocalScript - 画面の向きの変更を検出する
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local function onOrientationChange()
print("向きが変更されました:", playerGui.ScreenOrientation)
end
playerGui:GetPropertyChangedSignal("ScreenOrientation"):Connect(onOrientationChange)
ハプティックフィードバック
ほとんどのモバイルデバイスには、ハプティックフィードバックを提供するためのモーターが内蔵されています。振動や震えを追加することで、プレイヤーの体験を大いに向上させ、視覚や音声を超えた微妙なフィードバックを提供できます。
Robloxは、ほとんどのiPhone、Pixel、およびSamsung Galaxyデバイスを含む、ハプティック対応デバイスのためのハプティクスをサポートしています。ハプティックフィードバックは、HapticEffect インスタンスを通じて管理され、Type の特定の値(例:GameplayCollision や UIClick)に設定できます。
HapticEffect が設定されると、例えば以下のように Play() メソッドを通じてそれを開始できます:
local Workspace = game:GetService("Workspace")local effect = Instance.new("HapticEffect")effect.Type = Enum.HapticEffectType.GameplayExplosioneffect.Parent = Workspace-- ハプティック効果を再生effect:Play()