RobloxStudioで「簡単な釣りゲーム」の作成Part2を進めていきます。今回は魚を釣り上げるのを実装していきます。
はじめに
前回の続きのPart2を作成していきます。Part1は下記から。
Part1では釣竿を装備、クリックで飛ばすところまで作成しました。今回は飛ばした後に画面にボタンを表示して魚を釣り上げる所までを実装していきます。
ゲーム作成開始
まずは画面上にボタンを表示していきます。
GUIを作成
「StarterGui」配下に「ScreenGui」を追加、更にその配下に「Frame」を追加します。位置を目立つところに変更します。

「Frame」の配下には「TextButton」を追加、テキストとフォントを変更。UICornerを追加して見た目を整えます。竿を振って地面にウキが着いた後に、このボタンを表示します。

GUIの基本は下記が参考記事になります。
画面表示を制御
初期ではFrameを表示しないのでVisibleのチェックを外します。

次に「ReplicatedStorage」の配下に「RemoteEvent」を追加。Frameの配下には「LocalScript」を追加します。

スクリプトの作成
Part1で作成したRod配下にあるScriptに下記を追加します。追加分のみを記載しています。
local event = game:GetService("ReplicatedStorage").RemoteEvent
local function Casting()
--略
--
--TEST
local player = game.Players:GetPlayerFromCharacter(character)
event:FireClient(player)
end
LocalScriptは下記に変更します。
local event = game:GetService("ReplicatedStorage").RemoteEvent
local frame = script.Parent
local function showButton ()
frame.Visible = true
end
event.OnClientEvent:Connect(showButton)
竿を振ってウキを表示した後にRemoteEventを介してプレイヤーの画面にボタンを表示しています。
試しに動かしてみて下記のように竿を振った後にボタンが表示されたらOK。

スクリプトの最終形
下記が「Rod」配下のScriptの中身です。
local tool = script.Parent
local bobber = tool:FindFirstChild("bobber")
local rope = bobber.RopeConstraint
local bounce = false
local event = game:GetService("ReplicatedStorage").RemoteEvent
local character = nil
local HumanoidRootPart = nil
local function Casting()
local direction = HumanoidRootPart.CFrame.LookVector
local targetPosition = HumanoidRootPart.Position + direction * 10
HumanoidRootPart.Anchored = true
bobber.Position = targetPosition
bobber.Transparency = 0
rope.Visible = true
bobber.CanTouch = true
bounce = false
end
local function Fishing()
local player = game.Players:GetPlayerFromCharacter(character)
if player and not bounce then
bounce = true
task.wait(1)
event:FireClient(player)
end
end
local function Reset()
character.HumanoidRootPart.Anchored = false
bobber.Transparency = 1
bobber.CanTouch = false
rope.Visible = false
end
tool.Activated:Connect(Casting)
tool.Equipped:Connect(function()
character = tool.Parent
HumanoidRootPart = character:FindFirstChild("HumanoidRootPart")
end)
tool.Unequipped:Connect(Reset)
event.OnServerEvent:Connect(function(player)
local fishTool = Instance.new("Tool")
fishTool.Name = "Fish"
fishTool.Parent = player.Backpack
Reset()
end)
bobber.Touched:Connect(Fishing)
下記はFrame配下のlocalScriptの中身です。
local event = game:GetService("ReplicatedStorage").RemoteEvent
local frame = script.Parent
local button = frame.Button
local function showButton ()
frame.Visible = true
end
event.OnClientEvent:Connect(showButton)
button.MouseButton1Click:Connect(function()
frame.Visible = false
event:FireServer()
end)
簡単な流れの説明
- 釣竿を装備後(Tool.Equipped)、クリックで竿を振ります(Casting)。
- ウキが地面に触れると、ボタンを画面に表示します(Fishing→showButton)。
- ボタンをクリックするとバックパックに魚が格納されます(Button1Click→OnServerEvent)。
動かしてみて下記のように動けばOK

これで釣りゲームの骨組みが完成です。ここから先はバグ修正・機能追加などです。
例えば「地形・釣竿などの見た目の変更」、「魚・釣竿の種類を追加」、「魚を釣るときボタンクリックだけでなくミニゲームにする」、「ショップシステム」など。気が向いたら続きの機能を作成するかもしれないです。

