【Roblox】ProximityPromptを使ってプレイヤーにインタラクションを促す
はじめに
こんにちは、まつさこ です。
今回は、Roblox Studio でプレイヤーにインタラクションを促すための機能である ProximityPrompt について紹介します。
ProximityPrompt を使うことで、プレイヤーに対して近くに何かがあることを知らせることができ、プレイヤーがそのオブジェクトに対してインタラクションを行うことができます。
ProximityPrompt の実装方法と、気を付けるべきアンチパターン(ProximityPrompt が正常に動作しない作り方)についても解説します。
ProximityPrompt とは
ProximityPrompt は、プレイヤーに対して近くに何かがあることを知らせるための機能です。例えば、ドアを開けるためのボタンや、アイテムを拾うためのボタンなど、プレイヤーがインタラクションを行うためのトリガーとして利用されます。
オブジェクトに近づくと、PCであれば「E」ボタンを、モバイルデバイスであればタップを促すUIが表示され、プレイヤーがそのボタンを押すことでインタラクションを行うことができます。
公式ドキュメントはこちら。
ProximityPrompt の設置
ProximityPromptは
- Part
- Attachment
- Model(PrimaryPartが設定されているもの)
の子要素として設置された時のみ、正常に動作します。
① Part に ProximityPrompt を設置する場合
ProximityPrompt の親要素のPartの位置に、UIが表示されます。
② Attachment に ProximityPrompt を設置する場合
Attachmentの位置に、UIが表示されます。
③ Model に ProximityPrompt を設置する場合
ModelのPrimaryPartの位置に、UIが表示されます。
ProximityPrompt の設置のアンチパターン
ProximityPrompt が正常に動作しない作り方を紹介します。上で紹介した3つの方法以外は動かないのですが、やってしまいがちなミスについていくつか紹介します。
❌ PrimaryPart が設定されていない Model に ProximityPrompt を設置する
ModelのPrimaryPartが設定されていない場合、ProximityPrompt は正常に動作しません。
❌ Tool に ProximityPrompt を設置する
ToolにProximityPromptを設置しても、正常に動作しません。
自分のToolとしてBackpackから取り出したToolではもちろん動作しませんし、他のプレイヤーが持っているToolにも反応しません。
ProximityPromptをつけたToolを自分で取り出した場合
ProximityPromptをつけたToolを他のプレイヤーが取り出したものに、近づいた場合
ProximityPrompt の動作実装
ProximityPrompt 挙動を、Properties で細かく設定できます。
Property | 説明 |
---|---|
ActionText | UIに表示されるテキスト |
HoldDuration | 長押し時間の設定 |
KeyboardKeyCode | インタラクションするキーの設定 |
MaxActivationDistance | UIが表示される最大距離 |
ObjectText | UIに表示されるサブのテキスト |
上の画像の設定で動作させたときの様子がこちらです。MaxActivationDistance を30にしたので遠くからでも反応しており、ActionText や ObjectText に設定したテキストが表示されています。また、キーが「P」になっており、長押しすることでインタラクションが可能になっています。
ProximityPrompt にプレイヤーがインタラクションしたときのイベントは、 ProximityPrompt.Triggered
で取得できます。
サーバースクリプトとして作成し、ProximityPrompt オブジェクトと同じ階層に配置したときの例です。
local ProximityPrompt = script.Parent:WaitForChild("ProximityPrompt")
ProximityPrompt.Triggered:Connect(function(player)
print(player.Name .. " triggered the ProximityPrompt!")
end)
まとめ
今回は、ProximityPrompt の設置方法やアンチパターン、Properties の設定方法について解説しました。
ProximityPrompt を使って、プレイヤーにインタラクションを促す機能を実装してみてください!
読んでくださりありがとうございました🤗
Discussion