ツールを作る

剣や銃など、手に持って動作するものを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(mouse.Hit.Position..(クライアント))
	end)

	print("ツールを装備する(クライアント)")
end)

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

4件のコメント

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

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

返信を残す