Robloxでは、視点を移動するのに右ドラッグを使用します。しかし、マウス移動だけで視点操作したい場合はどうしたらいいのでしょうか。
そうしたケースでは、マウスを画面中央に固定する必要があります。また、それらはスクリプトから実装する必要があるため、多少わかりにくい仕組みになっているので注意が必要です。
今回は、マウスカーソルを画面中央に固定する方法についてご紹介します。
Contents
サンプルコード
早速ですが、マウスを画面中央に固定するサンプルコードです。
local RunService = game:GetService"RunService"
local UserInputService = game:GetService"UserInputService"
RunService:BindToRenderStep("MouseLock",Enum.RenderPriority.Last.Value+1,function()
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputServiceは、プラットフォームを横断した入力管理サービスです。この中のMouse.Behavior.LockCenterを呼び出すことでマウスポジションが固定されます。
ただし、ただ呼び出すだけではダメで、RunServiceのBindToRenderStepを経由する必要があります。
RunServiceはスクリプトの実行管理をさかさどるサービスです。:BindToRenderStepでは、その引数で指定したフェーズにfunctionを差し込むことができます。
また、逆にカーソルの固定を解除するには、以下のようにコードが必要です。
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
マウスカーソルを中央以外に固定する
マウスカーソルを中央に固定するコードを紹介しましたが、マウスカーソルを画面上の別の位置に固定することもできます。ただし、マウスポジションをスクリプトから変更することができないので、実用性はかなり低いです。
マウスを単純に現在地で固定するには、以下のコードを使ってください。
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
このコードが呼ばれた時点で、マウスカーソルが位置しているポイントに固定されます。解除するには、先述したコードMouseBehavior.Defaultを使用してください。
マウスカーソルはPCのみ表示されます
マウスカーソルはPCのみで表示されるため、スマートフォンやコンソールでは意味がありません。どちらかというと、PCの操作をモバイル操作に似せることになります。
マウス位置は、デバイスによって全く意味がないことをかならず考慮してください。
まとめ
マウスカーソルはUIの中でも重要な役割を果たします。今回は、マウスポジションを固定化する方法を紹介しましたが、マウスカーソルだけを消したいというケースもあるかと思います。そうした場合は以下の記事を参考にするといいでしょう。
また、Robloxに関する開発Tipsは、こちらの辞書引きページがおすすめです。ぜひ、こちらから参考になるページを探してみてください!