robloxで簡単な釣りのゲームを開発。Part2.魚をゲットする|Robloxゲーム制作

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

これで釣りゲームの骨組みが完成です。ここから先はバグ修正・機能追加などです。

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

タイトルとURLをコピーしました