完成動画
はじめに
本記事では「ProximityPrompt(近接プロンプト)」という機能を使って、キャラクターを別の場所にワープさせる方法を解説します。
使用する機能
- ProximityPrompt(近接プロンプト):対象のパーツに近づいたときに表示される「Eキー」などの入力ガイド
- HumanoidRootPart:プレイヤーのキャラクターの中心となるパーツ
- CFrame:3D空間上でオブジェクトの位置や向きを制御するための座標系
手順動画
エクスプローラー構成
Workspace
└Part1
└ProximityPrompt
└Part2
ServerScriptService
└Scriptスクリプトの内容
local Part1 = workspace:WaitForChild("Part1")
local prompt = Part1:WaitForChild("ProximityPrompt")
local Part2 = workspace:WaitForChild("Part2")
prompt.Triggered:Connect(function(player)
local character = player.Character
if character and character:FindFirstChild("HumanoidRootPart") then
character.HumanoidRootPart.CFrame = Part2.CFrame + Vector3.new(0, 3, 0)
end
end)簡単解説
1. 対象のパーツを取得
local Part1 = workspace:WaitForChild("Part1")
local prompt = Part1:WaitForChild("ProximityPrompt")
local Part2 = workspace:WaitForChild("Part2")workspaceからワープ元(Part1)、プロンプト(ProximityPrompt)、ワープ先(Part2)をそれぞれ取得します。
2. プロンプトが発火したときの処理を設定
prompt.Triggered:Connect(function(player)プレイヤーがEボタンを押したときにこの関数が呼び出されます。
3. プレイヤーのキャラクターを取得
local character = player.Character発火させたプレイヤーのキャラクターモデルを取得します。
4. HumanoidRootPartの存在を確認
if character and character:FindFirstChild("HumanoidRootPart") thenキャラクターとその中の「HumanoidRootPart」が存在するかどうかを確認します。
5. CFrameを使ってワープさせる
character.HumanoidRootPart.CFrame =Part2.CFrame + Vector3.new(0, 3, 0)
プレイヤーの中心をワープ先の位置に移動します。Vector3.new(0, 3, 0)で少し上に浮かせて、地面に埋まるのを防ぎます。
まとめ
ProximityPromptを使えば、インタラクティブなアクション(今回の場合はワープ)を簡単に実装することができます。今回のワープシステムはシンプルですが、組み合わせ次第で「ドア」「ワープゾーン」「転送装置」など、さまざまな応用が可能です。




コメント