エレベーターは、ユーザーが体験のある部分から別の部分へ移動するために操作できるプラットフォームです。このデバイスは、あなたが作成した世界の中でユーザーが新しいエリアに到達できるようにする際に役立ちます。このガイドでは、ユーザーが近接プロンプトと対話するときに上下に昇降するエレベーターをすぐに作成することができます。
エレベーターを作成するための以下の方法に従い、各セクションを確認して、以下のことを学びます。
- 基本的なパーツを使用して、ユーザーが立つためのプラットフォームと、上下に移動するためのプラットフォームが追従するトラックを作成します。
- プラットフォームの動作を駆動するために PrismaticConstraint を設定します。
- プラットフォームの動作を開始するためにユーザーが対話できる ProximityPrompt を作成します。
- エレベーターのすべてのコンポーネントを接続し、プラットフォームがトラックに沿って移動できるようにする Script を作成します。
プラットフォームとトラックの作成
Part は、動かしたり、サイズを変更したり、回転させたり、外観(色や材質など)をカスタマイズしたりすることができるRobloxの主なビルディングブロックです。エレベーターの基盤を作成する際に基本的なパーツを使用することは、エレベーターのプラットフォームとトラックが基本的な形状のみを必要とするため便利です。
エレベーターのプラットフォームとトラックを作成するには:
Studioのホームまたはモデルタブのツールバーに移動します。
パーツの下にあるドロップダウン矢印をクリックし、ブロックを選択します。ブロックパートがワークスペースに表示され、ユーザーが上下にエレベーターを昇降するプラットフォームに変わります。
エクスプローラーウィンドウでブロックを選択し、次にプロパティウィンドウで、
- 名前をPlatformに設定します。
- サイズを**[8,1,4]**に設定します。
エクスプローラーウィンドウでプラットフォームを選択し、CtrlD (⌘D)を押してパートを複製します。この複製パートが、プラットフォームが上下に移動するためのトラックになります。
ツールバーで移動ツールを選択し、1つの軸の矢印を使用して複製パートを元の位置から引き離し、各オブジェクトの間に小さな隙間を設けます。
プロパティウィンドウで、
- 名前をTrackに設定します。
- サイズプロパティでY軸を20スタッドの高さに設定します。
- 固定プロパティを有効にします。
エクスプローラーウィンドウで両方のパーツを選択し、CtrlG (⌘G)を押してグループ化します。
モデルの名前をElevatorに変更します。


ビューポートでは、モデルが2つの別々のオブジェクトとして表示されます。エクスプローラーウィンドウでは、モデルに別々のプラットフォームとトラックオブジェクトが含まれています。
プラズマティック制約の設定
エレベーターの基盤を構成する2つのパーツができたので、PrismaticConstraint を作成し、関連するアタッチメントを整列させてプラットフォームが理想的な経路に沿って移動できるようにし、制約の値を設定してプラットフォームがトラックに沿って上下に移動できるようにします。
プラズマティック制約とアタッチメントの作成
PrismaticConstraint は、2つの Attachments の間に剛性接合を作成し、アタッチメントが回転することなく1つの軸に沿ってスライドすることを可能にします。このタイプの制約は、プラットフォームが単一の向きを保ちながら上下に移動できるため、エレベーターに最適です。
プラズマティック制約とそのアタッチメントを作成するには:
エクスプローラーウィンドウで、Trackにプラズマティック制約を挿入します。
- Trackにカーソルを合わせ、**⊕**ボタンをクリックします。コンテキストメニューが表示されます。
- メニューからPrismaticConstraintを挿入します。
TrackとPlatformにアタッチメントを挿入します。
Trackにカーソルを合わせ、**⊕**ボタンをクリックします。コンテキストメニューが表示されます。
メニューからAttachmentを挿入します。
Platformでもこのプロセスを繰り返します。
両方のアタッチメントの名前をそれぞれTrackAttachmentとPlatformAttachmentに変更します。

PrismaticConstraintを選択します。
プロパティウィンドウで、アタッチメントをプラズマティック制約に割り当てます。
PrismaticConstraint.Attachment0 プロパティを選択します。カーソルが変更されます。
エクスプローラーウィンドウでTrackAttachmentを選択します。
PrismaticConstraint.Attachment1 プロパティを選択します。カーソルが変更されます。
エクスプローラーウィンドウでPlatformAttachmentを選択します。

アタッチメントを整列
両方のアタッチメントを親パーツの中心に保持していると、アタッチメントはそれぞれのパーツを互いに引き込もうとし、両方のパーツの物理が衝突してエレベーターが機能しなくなります。これを防ぐために、アタッチメントを親パーツの外側に移動させ、プラットフォームがトラックの外側にある妨げのない空間を通過できるようにする必要があります。それからアタッチメントをX軸とZ軸に沿って整列させ、プラットフォームがY軸に沿ってのみ動くようにします。
アタッチメントの位置を再配置し、整列させる前に、Studioの表示メニューから制約の詳細を表示を有効にして、ビューポートでアタッチメントが表示されることを確認してください。
制約のアタッチメントを整列させるには:
ツールバーで回転ツールを選択し、TrackAttachmentとPlatformAttachmentを回転させて、それぞれのアタッチメントの黄色の矢印がY軸の上を指すようにします。

移動ツールを選択し、アタッチメントのポイントを再配置して、両方が親パーツの外側にあり、X軸とZ軸に沿って整列するようにします。

プラズマティック制約の値を設定
PrismaticConstraint を持ち、その関連する Attachments を整列させたので、Script がプラットフォームがトラックに沿って上下に移動できるようにするための値を設定する時が来ました。移動範囲は、トラックの上下に相当する下限と上限の範囲に関連付けられています。トラックの底と上部はそれぞれTrackAttachmentから10スタッド離れているため、制約の下限と上限はそれぞれ -10 と 10 に設定する必要があります。


エレベーターの動作を可能にするために、制約の値を設定するには:
エクスプローラーウィンドウでPrismaticConstraintを選択します。
プロパティウィンドウでスライダーセクションに移動し、サーボスタイルモーターでプラットフォームの動作範囲に制限を設定できるようにします。新しいプロパティフィールドが表示されます。
- 制限の有効化をTrueに設定します。
- アクチュエータタイプをServoに設定します。
制限セクションに移動し、上下の限界値に接触時の弾力性(バウンス)なしで10スタッド上下にプラットフォームの移動範囲を設定します。以下のプロパティを設定した後、下限と上限の視覚的な補助具が新しい値に合わせて拡張します。
- 下限を**-10**に設定します。
- 反発係数を0に設定します。
- 上限を10に設定します。
サーボセクションに移動し、プラットフォームが物理的な影響に対抗して重さを保持でき、上下に快適なペースで移動し、初期化ポイントが制約の下限の底部に設定されていることを確認します。
- ServoMaxForceを10000に設定します。
- 速度を10に設定します。
- TargetPositionを**-10**に設定します。
プロキシミティプロンプトの作成
ProximityPrompt は、ユーザーが混在するエクスペリエンス内のオブジェクト(ドア、ライトスイッチ、ボタンなど)に近づくとアクションを引き起こすことを促すオブジェクトです。このプロセスでは、プロキシミティプロンプトを使用して、ユーザーがプラットフォームの近くにいる時にキーを押してエレベーターの動作を刺激することができます。
プロキシミティプロンプトを作成するには:
エクスプローラーウィンドウで、Platformにカーソルを合わせて**⊕**ボタンをクリックします。コンテキストメニューが表示されます。
メニューからProximityPromptを挿入します。

エレベーターの動作をスクリプトする
すべてのエレベーターの要素が完成しましたので、すべてを一緒に動作させ、プラットフォームを上下に移動させる Script を作成する時が来ました。
エレベーターの動作をスクリプトするには:
- エクスプローラーウィンドウで、Elevatorにカーソルを合わせて**⊕**ボタンをクリックします。コンテキストメニューが表示されます。
- メニューからScriptを挿入します。
- 新しいスクリプトに次のコードを入力します:
local platform = script.Parent.Platform
local prismaticConstraint = script.Parent.Track.PrismaticConstraint
platform.ProximityPrompt.Triggered:Connect(function(player)
print(prismaticConstraint.CurrentPosition)
if prismaticConstraint.CurrentPosition <= -9 then
prismaticConstraint.TargetPosition = 10
elseif prismaticConstraint.CurrentPosition >= 9 then
prismaticConstraint.TargetPosition = -10
end
end)
あなたが体験をプレイテストし、エレベーターのプロキシミティプロンプトのためのキーを入力すると、スクリプトが実行されてプラットフォームが制約から9スタッド以下または以上かを確認します。もし9スタッド以下でユーザーがプロキシミティプロンプトと対話する場合、プラットフォームは上に移動し、制約の上限に達するまで上下します;逆に、もし9スタッド以上であれば、ユーザーがプロキシミティプロンプトと対話すると、プラットフォームは下に移動し、制約の下限に達するまで移動します。