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

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

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

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ゲームの作り方でした。

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