ツールを作る

剣や銃など、手に持って動作するものをToolと言います。ツール制作はかなり難しいのですが、最も基本的なことだけを書いておきます。

  1. WorkspaceにToolを追加します。
  2. Toolの中にPartを入れます。
  3. Partの名称をHandleに変えます。
  4. ToolをStarterPackに移動します。

これだけでPartがツールになります。ツールを複数のPartで構成したい場合は、それぞれのPartをWeldConstraintで繋げる必要があります。すべてのPartのAnchoredは必ずオフにしてください。

プログラムを書く

Toolには、サーバーで動作するScriptと、クライアントで動作するLocalScriptの2つを使うことができます。下記のプログラムで動作チェックをしてみてください。

  1. ToolにScriptを挿入します。(サーバーで動作するプログラム)
local tool = script.Parent

-- ツールを装備した状態でマウスダウンで呼ばれる
tool.Activated:Connect(function()
	print("マウスダウン(サーバー)")
end)

-- ツールを装備した状態でマウスアップで呼ばれる
tool.Deactivated:Connect(function()
	print("マウスアップ(サーバー)")
end)

-- ツールを装備したら呼ばれる
tool.Equipped:Connect(function(mouse)
	mouse.Button1Down:Connect(function()
		-- サーバーでは呼ばれません!
		print(tostring(mouse.Hit.Position).."(サーバー)")
	end)
	print("ツールを装備する(サーバー)")
end)

-- ツールを外したら呼ばれる
tool.Unequipped:Connect(function()
	print("ツールを外す(サーバー)")
end)
  1. ToolにLocalScriptを挿入します。(クライアントで動作するプログラム)
local tool = script.Parent

-- ツールを装備した状態でマウスダウンで呼ばれる
tool.Activated:Connect(function()
	print("マウスダウン(クライアント)")
end)

-- ツールを装備した状態でマウスアップで呼ばれる
tool.Deactivated:Connect(function()
	print("マウスアップ(クライアント)")
end)

-- ツールを装備したら呼ばれる
tool.Equipped:Connect(function(mouse)
	mouse.Button1Down:Connect(function()
		-- サーバーの方で何かしたい場合は、RemoteEvent(FireServer)を使う
		print((tostring(mouse.Hit.Position).."(クライアント)")
	end)
	print("ツールを装備する(クライアント)")
end)

-- ツールを外したら呼ばれる
tool.Unequipped:Connect(function()
	print("ツールを外す(クライアント)")
end)

バックパックのUIを表示させない方法

バックパックのアイコンは自動的に表示されます。これを表示したくない場合は、StarterGui または、StarterPlayer の StarterPlayerScripts に LocalScript を追加し、下記のプログラムを入れると表示されなくなります。この場合、ツールの装備・非装備は、プログラムで行わなくてはなりませんのでご注意ください。

local CoreGui = game:GetService("StarterGui")
CoreGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)

4件のコメント

  1. 初めまして。
    質問なのですが、ツールをHandle無しで作るにはどうすれば良いでしょうか。
    他の人のゲームをプレイしていて気になりました。
    ご回答よろしくお願いします。

  2. ご回答ありがとうございます。
    しつこいですが、もう一つ質問させてください。
    「Toolを持つと腕が上がる動作」を無効にすることはできるのでしょうか。

返信を残す