Cover image for Robloxで簡単なコイン拾いゲームを作る
robloxロブロックス

Robloxで簡単なコイン拾いゲームを作る

May 03, 2019

5 min read

mitsuruogMitsuru Ogawa

今日はコインを拾うだけの簡単なゲームを作ってみましょう。

Debris(デブリ)」というビルトインサービスを使って、ゲームフィールド上のランダムな場所にコインを発生させます。 Debris サービスは Roblox の中でも非常に有用なもので、これを使うことでゲームの中でアイテムやモンスターなどを自由に発生させることができます。

完成形のプロジェクトはこちらです。

LeaderBorad を作成する

まず、今プレイヤーが持っているコインの総量を表示するための LeaderBoard を作成します。作り方はこちらを参照してください。

Script の名前はLeaderBoardScriptとして、ServiceScriptService の中に入れておきます。LeaderBoard に表示する名前はMoneyとしておきましょう。

コインを作る

コインを作りましょう。Part の名前はMoneyとします。形は Cylinder か Ball を使えばいいと思います。

一度、Workspace 上でコインの Part を完成させてから、ServiceStorage に移動します。 ServiceStorage とは、Roblox のオブジェクトの格納庫のようなものです。注意点としては Server 以外からはアクセスできません。

コインをゲームフィールド上に発生させる

では、コインをゲームフィールド上に発生させましょう。ServiceScriptService の中にMoneyDropperScriptを作成します。

最初にコインの Part とDebrisサービスを呼び出して使えるようにしておきます。

local money = game:GetService("ServerStorage").Money
local Debris = game:GetService("Debris")

続いてwhileループの中でコインを複製してランダムな位置に配置させます。

...

while(1) do
  wait()
  -- コインを1つ複製する
  local clonedMoney = money:clone()

  -- マップの中の縦横-500〜500の中のランダムな位置に発生するようにする
  local positionX = math.random(-500, 500)
  local positionZ = math.random(-500, 500)
  -- 注意)y軸を100としているのは空から落ちてくるようにするため
  clonedMoney.Position = Vector3.new(positionX, 100, positionZ)
  clonedMoney.Parent = workspace

  -- Debrisサービスに追加することでマップ上に姿を表す
  Debris:AddItem(clonedMoney, 20)
end

Debris:AddItemの第 1 引数にはマップ上に出現させるオブジェクトを、第 2 引数にはオブジェクトの生存期間を設定します。上の例ではコインは 20 秒後に自動的に消えます。

テスト実行するとコインが空から降ってくるようになりました。Debris サービス、超便利です。

コインに触れたらお金が増えるようにする

最後にコインに触れたらプレイヤーのお金が増えるようにしましょう。 コインの Part(Money)の中に Script を作成します。名前はMoneyScriptにしておきます。

基本的には、コインに何か触れたら実行されるイベントハンドラを作成し、触れたものがプレイヤー(Humanoid)だったら処理を続行させます。

local money = script.Parent

local function onTouched(part)
  local humanoid = part.Parent:FindFirstChild("Humanoid")
  if humanoid then
    -- ここに処理を書く
  end
end

money.Touched:Connect(onTouched)

では、コインに触れたプレイヤーのお金を増やして、回収されたコインを消滅させます。 お金は LeaderBoard のMoneyに格納されるので、LeaderBoard の値を更新する必要があります。

...

local function onTouched(part)
  local humanoid = part.Parent:FindFirstChild("Humanoid")
  if humanoid then
    -- プレイヤー名を取得する
    local playerName = part.Parent.Name
    local player = game.Players:FindFirstChild(playerName)

    -- LeaderBoardの値を更新する
    player.leaderstats["Money"].Value = player.leaderstats["Money"].Value + 5

    -- コインを消滅させる
    money:Destroy()
  end
end

...

テスト実行すると、コインに触れるとお金が増えていきます。

まとめ

簡単な Roblox ゲームの作り方でした。

面白いゲームを作るには、さらに何か面白い仕掛けが必要ですが、基本的な作り方は今日紹介した通りです。例えば、コインの中にプレミアムコインや爆弾を混ぜたりしたり、集めたお金でアイテムを購入できるようにすることで、もう少しゲームっぽくなると思います。