ロブロックス(Roblox)スタジオで手に持てるアイテム(ツール)を作る方法|クリックで速く走れるドリンクを画像で解説

制作手順難易度: 中級所要時間: 約50分(目安)情報確認日: 2026年10月12日

「剣やドリンクのように、手に持って使えるアイテムを作りたい」「拾ったアイテムをクリックしたら何か起きるようにしたい」

ロブロックス(Roblox)スタジオで手に持てるアイテム(ツール)を作る方法を、実際の画像付きで誰でも簡単に分かるように解説します。ここでは、クリックすると5秒だけ速く走れる青いドリンクを作り、触ると1人1本もらえる台を置くところまで進めます。アバターの服やアクセサリーの作り方とは別の話です。

中級ステップ11/28 前の記事:ロブロックス(Roblox)で追いかけてくる敵の作り方 全体の順番を見る

使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。パーツやスクリプトの入れ方はオビーの作り方で画像付きで解説しています。

今回の完成状態:下の画像のように、アバターが青いドリンクを右手に持ち(画像の1)、画面の下の欄に「SpeedDrink」(画像の2)が出れば成功です。

1. Toolを入れる

手に持てるアイテムは「Tool(ツール)」という部品で作ります。新しいBaseplateを開き、エクスプローラのWorkspaceの「+」を押して、検索欄に「Tool」と入れ、一覧の「Tool」(赤い枠)を押します。

エクスプローラでF2キーを押し、名前を「SpeedDrink」に変えます(赤い枠)。この名前が、画面の下の欄にそのまま出ます。

2. 手に持つ部分「Handle」を入れる

エクスプローラのSpeedDrinkにマウスを乗せて「+」を押し、「Part」(赤い枠)を入れます。

エクスプローラでF2キーを押し、入れたPartの名前を「Handle」に変えます。名前は大文字のHで始まる「Handle」にします。Robloxの公式の説明によると、Toolの中の「Handle」という名前のパーツが、アバターの右手に持たれる部分になります。

エクスプローラでHandleを選んだ状態で、プロパティの検索欄に「Size」と入力し、Sizeを「1, 1.6, 1」にしてEnterキーを押します(赤い枠)。

続けてHandleを選んだまま、プロパティの検索欄に「Color」と入力します。BrickColorとColorの2つが並ぶので、下の名前がちょうど「Color」の欄に「0, 120, 255」と入れてEnterキーを押します。ドリンクが青くなります(赤い枠)。

Toolには位置の欄がないので、置く場所はHandleで決めます。Handleを選んだままプロパティの検索欄に「Position」と入力し、CFrameの下のPositionを「0, 1, -8」にしてEnterキーを押すと、ドリンクがスポーン地点の前に出ます(赤い枠)。

エクスプローラのSpeedDrinkの中に「Handle」があり(画像の1)、プロパティのAnchoredにチェックが入っていないことも確かめます(画像の2)。3D画面に青いドリンクが立っています(画像の3)。固定されていると、持って歩けません。

ここまでで、SpeedDrinkはスポーン地点の前(Position 0, 1, -8)に置かれています。

3. 名前の説明と、落とせない設定にする

エクスプローラでSpeedDrink(Tool)を選んだ状態で、プロパティの検索欄に「ToolTip」と入力します。ToolTipの欄に「クリックで5秒速く走れる」と入れてEnterキーを押します(赤い枠)。画面の下の欄にマウスを乗せたときに出る説明です。

SpeedDrinkを選んだまま、プロパティの検索欄に「CanBeDropped」と入力し、CanBeDroppedの右の四角を押してチェックを外します(赤い枠)。チェックが入っていると、手に持っているときにBackspaceキーを押すと、アイテムを地面に落としてしまいます。

プロパティ初期値この記事の値意味
ToolTip空クリックで5秒速く走れる下の欄にマウスを乗せたときの説明
CanBeDroppedオンオフBackspaceキーで落とせるか
RequiresHandleオンオン(そのまま)手に持つ部分(Handle)が必要か

4. クリックで速くなるスクリプトを入れる

エクスプローラのServerScriptServiceにマウスを乗せて「+」を押し、一覧の「Script」を押します。

エクスプローラにできた「Script」を選んだ状態でF2キーを押し、「SpeedDrinkEffect」と入力してEnterキーを押します。

続けてSpeedDrinkEffectを選んだまま、プロパティの検索欄に「RunContext」と入れて、「▼動作」の欄にあるRunContextの一覧から「Server」を選びます(赤い枠)。RunContextは、スクリプトをサーバーとプレイヤーのどちらで動かすかを決める設定です。

エクスプローラのSpeedDrinkEffectをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。

local Players = game:GetService("Players")

local TOOL_NAME = "SpeedDrink" -- 道具の名前(Tool の名前と同じにする)
local FAST_SPEED = 32 -- 飲んだあとの速さ
local NORMAL_SPEED = 16 -- ふだんの速さ(最初の設定は16)
local EFFECT_SECONDS = 5 -- 速くなっている秒数

-- 道具1本ごとに、クリックしたときの動きをつける
local function setupTool(tool)
	-- 同じ道具に2回つけないように印を見る
	if tool:GetAttribute("Ready") then return end
	tool:SetAttribute("Ready", true)

	tool.Activated:Connect(function()
		if not tool.Enabled then return end -- 効いている間は使えない
		local character = tool.Parent
		local humanoid = character and character:FindFirstChildOfClass("Humanoid")
		if not humanoid or humanoid.Health <= 0 then return end

		tool.Enabled = false
		print(tool.Parent.Name .. " がドリンクを飲みました")
		humanoid.WalkSpeed = FAST_SPEED
		task.wait(EFFECT_SECONDS)
		humanoid.WalkSpeed = NORMAL_SPEED
		tool.Enabled = true
	end)
end

-- 道具を手に持つと、道具はキャラクターの中に移る。そのときに準備する
local function onCharacterAdded(character)
	character.ChildAdded:Connect(function(child)
		if child:IsA("Tool") and child.Name == TOOL_NAME then
			setupTool(child)
		end
	end)
end

Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(onCharacterAdded)
end)
コードの部分していること
character.ChildAddedアイテムを手に持つと、アイテムはキャラクターの中に移る。そのときに準備する
印(Ready)持ち替えるたびに準備が重ならないようにする
tool.Activated手に持ってクリックしたときに動く
tool.Enabled = false効いている間は、もう一度使えないようにする

効き目のスクリプトは、Toolの中ではなくServerScriptServiceに置きます。5秒待っている間に持ち替えても、止まらずに速さを元に戻せるからです。

5. テストで拾って使う

3D画面の上の作品のタブ「Place6」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。置いてあるドリンクに歩いて触ると、アバターが右手に持ちます(画像の1)。画面の下の欄に「SpeedDrink」が入ります(画像の2)。数字キーの1を押すと、手に持つ・しまうを切りかえられます。

以下は、アソビシフト編集部がテストで確かめた結果です。手に持ったまま画面をクリックすると、ドリンクを飲んでFAST_SPEEDで決めた32の速さで走れるようになり、EFFECT_SECONDSで決めた5秒たつと、NORMAL_SPEEDの16に戻りました。出力には「(アカウント名)がドリンクを飲みました」と出ます(赤い枠)。速くなっている5秒の間は、何度クリックしても「ドリンクを飲みました」は1回しか出ませんでした。5秒たつと、もう一度飲めます。

Shift + F5キーでテストを停止します。

6. 触るともらえる台を作る

置いておくのではなく、台に触った人に1本ずつ配るようにします。エクスプローラのSpeedDrinkをマウスでつかんで、押したまま下の「ServerStorage」の上まで動かします。ServerStorageの行に枠が出たら(赤い枠)、マウスを離します。

ServerStorageの左に三角が付き、その中にSpeedDrinkが入れば移せています(赤い枠)。

ServerStorageの中にSpeedDrinkが入ったところに赤い枠ServerStorageの中のものは、遊ぶ人からは見えません。

エクスプローラのWorkspaceにマウスを乗せて「+」を押し、一覧の「Part」を押します。

エクスプローラにできた「Part」を選んだ状態でF2キーを押し、「DrinkGiver」と入力してEnterキーを押します(画像の1)。

続けてDrinkGiverを選んだまま、プロパティの検索欄に「Size」と入力し、Sizeを「4, 1, 4」にしてEnterキーを押します(画像の2)。

DrinkGiverを選んだまま、プロパティの検索欄に「Position」と入力し、CFrameの下のPositionを「0, 0.5, -12」にしてEnterキーを押します(赤い枠)。

DrinkGiverを選んだまま、プロパティの検索欄に「BrickColor」と入力します。BrickColorの欄を押すと色の一覧が出るので、緑の「Bright green」を押します(赤い枠)。

DrinkGiverを選んだまま、プロパティの検索欄に「Anchored」と入力し、Anchoredにチェックを入れて固定します(赤い枠)。

エクスプローラのServerScriptServiceにマウスを乗せて「+」を押し、一覧の「Script」を押します。

エクスプローラにできた「Script」を選んだ状態でF2キーを押し、「DrinkGiver」と入力してEnterキーを押します(画像の1)。台のPartと同じ名前ですが、こちらはServerScriptServiceの中のScriptです。

続けてScriptのDrinkGiverを選んだまま、プロパティの検索欄に「RunContext」と入力し、RunContextの一覧から「Server」を選びます(画像の2)。

ここまでで、ServerScriptServiceに2つのScript(画像の1)、ServerStorageにSpeedDrink(画像の2)、Workspaceに緑の台(画像の3)がそろいます。

エクスプローラのServerScriptServiceの中のDrinkGiverをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local template = ServerStorage:WaitForChild("SpeedDrink") -- 配る元の道具
local giver = workspace:WaitForChild("DrinkGiver") -- 触る台

-- もう持っているか(下の欄の中と、手に持っている分の両方を見る)
local function hasTool(player)
	local backpack = player:FindFirstChildOfClass("Backpack")
	if backpack and backpack:FindFirstChild(template.Name) then return true end
	local character = player.Character
	if character and character:FindFirstChild(template.Name) then return true end
	return false
end

giver.Touched:Connect(function(hit)
	-- 触れたのがプレイヤーのキャラクターか確かめる
	local character = hit.Parent
	local player = Players:GetPlayerFromCharacter(character)
	if not player then return end
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if not humanoid or humanoid.Health <= 0 then return end
	if hasTool(player) then return end

	local backpack = player:FindFirstChildOfClass("Backpack")
	if not backpack then return end
	template:Clone().Parent = backpack
end)

画面の下の欄は「Backpack(バックパック)」といいます。手に持っているアイテムは、Backpackからキャラクターの中に移ります。そのため、両方を見てから配らないと、手に持ったまま台に乗るたびに増えてしまいます。

7. テストで1本だけもらえるか確かめる

3D画面の上の作品のタブ「Place6」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。以下は、アソビシフト編集部がテストで確かめた結果です。緑の台に乗ると、画面の下の欄にSpeedDrinkが入ります(画像の1)。何度乗り直しても、下の欄のSpeedDrinkは1つのままで、増えませんでした。

数字キーの1で手に持ったまま台に乗っても、下の欄のSpeedDrinkは1つのままで(赤い枠)、Backspaceキーを押しても落ちませんでした。

最後に、アバターを倒して生き返らせます。Escキーを押してロブロックスのメニューを開き、下の「リスポーン」を押します。「キャラクターをリスポーンしてよろしいですか?」と出たら、「リスポーン」を押します。生き返ると、画面の下の欄からSpeedDrinkがなくなっていました。Robloxの公式の説明によると、倒れるとBackpackは作り直され、StarterPackとStarterGearの中身だけが入ります。台でもらったアイテムは消えるので、もう一度台に乗ってもらいます。

手に持つ位置を直す(Grip)

アイテムが手に深く刺さって見える、持つ場所を少しずらしたい、というときは、ToolのプロパティのGripで直します。テスト中なら、先にShift + F5キーでテストを停止します。

エクスプローラの「ServerStorage」の左の三角を押して開き、中のSpeedDrink(Tool)を押して選びます。プロパティの検索欄に「Grip」と入れると、「Grip」の下に「Position」と「Orientation」が出ます。最初はどちらも「0, 0, 0」です。PositionはHandleのどこを手で持つか、Orientationは持ったときの傾きです。

試しに、SpeedDrinkを選んだまま(画像の1)、Gripの下のPositionを「0, 0.5, 0」にしてEnterキーを押します(画像の2)。

3D画面の上の作品のタブ「Place6」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。緑の台に乗ってドリンクをもらい、数字キーの1で手に持つと、持つ場所がHandleの上のほうにずれて、ドリンクが手より下に下がりました。下の2枚は、同じ向きから見たところです。

数を少しずつ変えてテストし、見た目のよい所を探します。確かめたら、Shift + F5キーでテストを停止します。

元の持ち方に戻すときは、ServerStorageの中のSpeedDrinkを選んだまま、プロパティの検索欄に「Grip」と入力し、Gripの下のPositionを「0, 0, 0」にしてEnterキーを押します。

持っているときだけキーを使えるようにする

「アイテムを持っているときだけ、Qキーで特別な動きをする」ようにもできます。キーを調べられるのはプレイヤーのパソコンで動くスクリプトだけなので、ここではLocalScriptを使います。

エクスプローラの「ServerStorage」の中のSpeedDrinkにマウスを乗せて「+」を押し、検索欄に「LocalScript」と入れて「LocalScript」を押します。SpeedDrinkをServerStorageに移したあとでも、SpeedDrinkの中に入れれば同じように動きます。

エクスプローラにできた「LocalScript」を選んだ状態でF2キーを押し、「DrinkKey」と入力してEnterキーを押します(赤い枠)。

DrinkKeyをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。

local ContextActionService = game:GetService("ContextActionService")

local tool = script.Parent
local ACTION_NAME = "CheckDrink"

-- Qキーを押したときの動き
local function onAction(actionName, inputState)
	if actionName == ACTION_NAME and inputState == Enum.UserInputState.Begin then
		print("ドリンクを持っているので、Qキーが使えます")
	end
end

-- 手に持ったときだけ、Qキーを使えるようにする
tool.Equipped:Connect(function()
	ContextActionService:BindAction(ACTION_NAME, onAction, true, Enum.KeyCode.Q)
end)

-- しまったら、Qキーを使えなくする
tool.Unequipped:Connect(function()
	ContextActionService:UnbindAction(ACTION_NAME)
end)
コードの部分していること
tool.Equippedアイテムを手に持ったときの合図。ここでQキーを使えるようにする
tool.Unequippedアイテムをしまったときの合図。ここでQキーを使えなくする
BindAction(..., true, Enum.KeyCode.Q)Qキーを押したらonActionを動かす。3つ目のtrueは、スマホなどのタッチ画面用のボタンを作るかどうかの指定(Robloxの公式の説明より)

3D画面の上の作品のタブ「Place6」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。緑の台に乗ってドリンクをもらい、数字キーの1で手に持ちます。

以下は、アソビシフト編集部がテストで確かめた結果です。ドリンクを持ってQキーを押すと、出力に「ドリンクを持っているので、Qキーが使えます」と1行出ました(画像の1)。続けて1キーでドリンクをしまい(画像の2)、もう一度Qキーを押しても、何も出ませんでした。

確かめたら、Shift + F5キーでテストを停止します。

printの行を、エフェクトを出す・音を鳴らすなどに書きかえると、持っているアイテムごとに違うキーの動きを作れます。

アイテムを置く場所で何が変わるか

置く場所どうなるか向いている使い方
Workspace触った人が拾って手に持つ。1人が拾うとなくなる落ちているアイテム
StarterPack全員が、生き返るたびに最初から持っている全員が使う基本の道具
ServerStorage+配るスクリプト決めた条件で配れる。倒れると消える台でもらう、お店で買う
プレイヤーごとのStarterGearその人だけ、生き返っても持っている買ったアイテムを持ち続けさせる

StarterGearは、遊んでいる人ごとに、Playersの中のその人の中に作られる入れ物です。生き返るたびに、中身がBackpackに入ります。編集中のエクスプローラには出てこないので、スクリプトから入れます。

持てない・効かないときの確かめ方

症状見るところ直し方
触っても拾えないHandleの名前Toolのすぐ下に「Handle」という名前のPartがあるか(大文字のH)
拾うとアバターが動かないHandleのAnchoredチェックを外す
クリックしても何も起きないスクリプトの場所ServerScriptServiceにあり、RunContextがServerか
クリックしても何も起きないToolの名前TOOL_NAMEとToolの名前が同じか
台に乗るたびに増える本数の数え方Backpackとキャラクターの中の両方を見る
Backspaceで落ちてしまうCanBeDroppedチェックを外す

AIに相談するときの伝え方

Roblox Studioで、Tool「SpeedDrink」を手に持ってクリックすると、5秒だけWalkSpeedを32にしたいです。
ServerScriptServiceのScriptで、Tool.Activatedを受け取ってください。
効いている間はTool.Enabledをfalseにして連打できないようにし、5秒後に16に戻してください。

よくある質問

アイテムに絵(アイコン)を付けられる?

付けられます。Robloxの公式の説明によると、ToolのTextureIdに画像のアセットIDを入れると、下の欄にその絵が出ます。この記事のテストではTextureIdを空のままにしたので、下の欄にはToolの名前(SpeedDrink)が出ました。

お金で買ったアイテムを持ち続けさせたい

ゲームパスを持っている人だけに配るなら、ゲームパスの作り方と同じように、持っているかを確かめてから、その人のStarterGearに入れます。

次のステップ(中級 12/28)

次は、剣で攻撃できるようにします。

→ ロブロックス(Roblox)スタジオで剣の攻撃を作る方法

次に知りたいことを選ぶ

次に読む記事