「マップに落ちているコインを拾うゲームを作りたい」「拾った数を画面に出すにはどうするの?」
ロブロックス(Roblox)でコイン集めゲームを作る方法を、実際の画像付きで誰でも簡単に分かるように解説します。この記事では、黄色いコインを拾うと、拾った人の数だけが1増え、少し待つとコインがまた現れるところまで作ります。
入門ステップ15/24 前の記事:ロブロックス(Roblox)スタジオでボタンを作る方法 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。パーツの置き方はRoblox Studioの使い方、フォルダーの作り方や名前の変え方はオビーの作り方で画像付きで解説しています。
今回の完成状態:下の画像のように、真ん中のコインを拾うとコインが消え、右上の「Coins」が1になれば成功です。

1. コインを入れるフォルダーとコインを作る
新しいBaseplateを開き、エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」(赤い枠)を押してください。画像の赤い枠が「次に押す場所」で、画像を押すと大きく表示できます。ボタンの名前や置き場所は、Roblox側の更新で変わることがあります。

一覧の検索欄に「Folder」と入れて、一覧の「Folder」(赤い枠)を押します。

エクスプローラにできた「Folder」を右クリックして「名前を変更」(赤い枠)を押し、「Coins」と入れてください。

エクスプローラの「Coins」にマウスを乗せて、右に出る「+」(赤い枠)を押します。

出てきた一覧の上の検索欄に「Part」と入れ、一覧に出た「Part」を押します(赤い枠)。Coinsの中に四角いパーツができます。

エクスプローラにできた「Part」を選んだ状態でF2キーを押し、「Coin」と入力してEnterキーを押します。

2. コインの形・大きさ・色を決める
エクスプローラで「Coin」を選んだ状態で、プロパティの検索欄に「Shape」と入れ、「Block」の右の三角を押して、一覧から「Cylinder」(赤い枠)を選びます。Cylinderは円柱の形です。

Coinを選んだまま、プロパティの検索欄に残っている「Shape」を消して「Size」と入れ、数字を「0.6, 4, 4」にしてEnterキーを押します(赤い枠)。

続けてCoinを選んだまま、プロパティの検索欄を「Position」に書き換えます。「Position」はいくつか出てくるので、「▼CFrame」のすぐ下にあるPositionを「0, 3.5, -12」にしてEnterキーを押します(赤い枠)。

Cylinderは、そのままだと丸い面が横を向き、スタートからは細い板に見えます。エクスプローラで「Coin」を選んだ状態で、プロパティの検索欄を「Orientation」に書き換え、「▼CFrame」のすぐ下のOrientationを「0, 90, 0」にしてEnterキーを押します(赤い枠)。

丸い面がスタートの方を向いた薄い丸い板になって、スポーン地点の前に立ちます。

Coinを選んだまま、3D画面上部メニューのホームタブにある「色」ボタン(「素材」の右、「グループ」の左)の右の小さな矢印(画像の1)を押して色の一覧を開き、黄色の「New Yeller(ニューイエロー)」(画像の2)を選んでください。そのあと「色」ボタンのアイコン本体を押せば、パーツがその色になります。

続けてCoinを選んだまま、同じホームタブの「固定」(画像の1、「エクスプローラ」ボタンのすぐ左)を押します。プロパティの検索で「Anchored」と入れると、チェックが付いていること(画像の2)を確かめられます。

最後に、Coinを選んだまま、プロパティの検索欄に「CanCollide」と入れて、チェックを外します(赤い枠)。CanCollideは「ぶつかるか」の設定です。チェックがあると、アバターがコインにぶつかって止まってしまうので外します。触れたことを知らせる「CanTouch」はオンのままにします。

3. コインを3枚に増やす
エクスプローラで「Coin」を選んだ状態で、Ctrl+Dキーを2回押します。Coinsの中にCoinが3つ並びます。名前は3枚とも「Coin」のままで大丈夫です。スクリプトは「Coins」フォルダーの中のものを全部コインとして扱います。
エクスプローラで2つめのCoinを選び(画像の1)、プロパティの検索欄に「Position」と入れます。「▼CFrame」のすぐ下のPositionを「-8, 3.5, -12」にしてEnterキーを押します(画像の2)。

続けてエクスプローラで3つめのCoinを選び、プロパティの検索欄に「Position」と入れます。「▼CFrame」のすぐ下のPositionを「8, 3.5, -12」にしてEnterキーを押します。次の画像のように、コインが3枚横に並べば完了です。

4. コインのスクリプトを入れる
エクスプローラの「ServerScriptService」にマウスを乗せて、右に出る「+」(赤い枠)を押してください。

一覧の「Script」(赤い枠)を押します。

エクスプローラにできた「Script」を選んだ状態でF2キーを押し、「CoinService」と入力してEnterキーを押します。
CoinServiceをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。
local Players = game:GetService("Players")
local coins = workspace:WaitForChild("Coins")
local RESPAWN_SECONDS = 5 -- 拾われたコインが戻るまでの秒数
-- 参加した人ごとに Coins の数を用意する
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local count = Instance.new("IntValue")
count.Name = "Coins"
count.Value = 0
count.Parent = leaderstats
end)
local function setupCoin(coin)
local ready = true -- このコインを今拾えるか
coin.Touched:Connect(function(hit)
if not ready then return end
-- 触れたのがプレイヤーのキャラクターか確かめる
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
ready = false
player.leaderstats.Coins.Value += 1
coin.Transparency = 1
task.wait(RESPAWN_SECONDS)
coin.Transparency = 0
ready = true
end)
end
for _, coin in coins:GetChildren() do
setupCoin(coin)
end

このコードがしていることは3つです。
| 部分 | していること |
|---|---|
| Players.PlayerAdded | 参加した人ごとに「leaderstats」という入れ物と、その中の「Coins」の数を用意する |
| GetPlayerFromCharacter | コインに触れたのがアバターかを確かめる。ほかのパーツが触れても数えない |
| ready | そのコインを今拾えるか。拾われたら透明にして、RESPAWN_SECONDSで決めた5秒後に戻す |
「leaderstats」という名前の入れ物に数を入れると、ロブロックスが自動で画面の右上に一覧を出してくれます。名前は小文字で「leaderstats」と書く決まりです。
5. 1人でテストして、数が増えるか確かめる
3D画面の上の作品のタブ「Place12」(赤い枠)を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。右上に「人」と「Coins」の一覧が出て、Coinsは「0」です。一覧が出ていないときは、キーボードのTabキーを押すと表示されます。


Wキーで前に歩いて、真ん中のコインに触れます。以下は、アソビシフト編集部が真ん中のコインに触れて確かめた結果です。コインが消えて、右上のCoinsが「1」になれば成功です。

少し下がって5秒待つと、消えたコインがまた現れます。また拾えるようになった合図です。

拾ったあと5秒間は、同じコインに触れても数は増えません。アバターがコインに1回触れただけでも、触れたという知らせは何度も届きます。そこで、コードの「ready」で、RESPAWN_SECONDSで決めた5秒間は拾えないようにしています。
6. 2人でテストして、数が混ざらないか確かめる
2人でテストする前に、手順5の1人用のテストを終わらせておきます。画面左上の赤い四角の「停止」ボタン(赤い枠)を押すか、Shiftキーを押しながらF5キーを押すと、いつもの編集画面に戻ります。テスト中は「テスト」のメニューが灰色になって選べないので、必ず止めてから次へ進んでください。

画面左上の「テスト」の右の「∨」を押し、一覧から「サーバーとクライアント」(赤い枠)を選びます。

人数の上向き三角(画像の1)を押して「2」にし、青い再生ボタン(画像の2)を押してください。

しばらく待つと、元のStudioの窓とは別に、「サーバー」の窓と、Player1・Player2のテストの窓が開きます。テストの窓の右上の一覧では、その窓の人の名前が白く、もう1人の名前は灰色で出ます。これで、どちらがPlayer1の窓かを見分けます。一覧が出ていないときは、窓の3D画面を1回押してからTabキーを押します。Player1の窓を押して前に出し、Wキーで歩いて真ん中のコインを拾います。
下の画像は、Player1とPlayer2の窓を左右に並べたものです。左がPlayer1、右がPlayer2の画面です。どちらの一覧でも、Player1は「1」、Player2は「0」になっていれば、人ごとに数が分かれています。

確かめたら、元のStudioの窓の左上の赤い丸の「終了」ボタン(赤い枠)で2人のテストを閉じます。

作品を保存します。3D画面上部メニューの「ファイル」を押し、一覧の「Robloxに保存」(赤い枠)を押します。

初めて保存するときは、名前を入れる窓が出ます。名前の欄にゲームの名前を入れ、右下の青い「保存」を押します。この窓はオビーの作り方の「9. 保存して、開き直して確かめる」で画像付きで解説しています。
コインがうまく動かないときの直し方
| 困ったこと | 確かめること | 直し方 |
|---|---|---|
| 右上に一覧が出ない | 一覧が閉じているだけではないか。「leaderstats」のつづりが小文字で合っているか | Tabキーを押す。それでも出なければコードの名前を直す |
| 「サーバーとクライアント」が灰色で選べない | 1人用のテストが動いたままになっていないか | 「停止」ボタンかShift+F5でテストを止める |
| コインに触れても数が増えない | コインが「Coins」フォルダーの中にあるか。CanTouchがオンか | エクスプローラでCoinを「Coins」の上までドラッグして離す。Coinを選んでプロパティの検索欄に「CanTouch」と入れ、チェックを入れる |
| コインにぶつかって進めない | CanCollideのチェックが外れているか | チェックを外す |
| コインが下に落ちる | 「固定」が押されているか | 「固定」を押す |
| 一度に何枚分も増える | コードの「ready」の行を消していないか | 記事のコードに戻す |
| あとから置いたコインだけ拾えない | テスト中に置いたコインではないか | テストを止めてから置き、テストし直す |
次に作れるもの
コインを集められるようになったら、次のような遊びに広げていけます。ChatGPTやClaudeなどのAIに今のコードを見せて、1つずつ頼んでいきます。
Roblox Studioで、Coinsフォルダーのコインを拾うとleaderstatsのCoinsが1増えるゲームを作りました。
今のコードを貼ります。
コインを10枚集めたら、その人の画面に「全部集めた!」と出るようにしたいです。
今の仕組みを壊さずに、追加するコードと置き場所を教えてください。
今回の数は、ゲームから抜けると消えます。次に入ったときも数を残したいときは、「DataStore」というデータ保存の仕組みを使います。作り方はDataStoreの使い方で解説しています。
よくある質問
コインを回転させたり、光らせたりできる?
できます。回転は、コインの向きを少しずつ変えるスクリプトで作ります。光らせるには、エクスプローラでコインの「+」から「PointLight」を入れます。どちらもAIに「コインをゆっくり回したい」のように頼むと、コードを書いてもらえます。
集めたコインでアイテムを買えるようにできる?
できます。ただし、ボタンを押してアイテムを買う仕組みは、遊ぶ人の画面とサーバーの間でやりとりが必要になり、作り方が一段むずかしくなります。まずはこの記事のコイン集めを完成させてから進むのがおすすめです。
次のステップ(入門 16/24)
次は、「Infinite yield possible」の警告が出たときの直し方を覚えます。
次に知りたいことを選ぶ
- 次のステップ:「Infinite yield possible」の警告が出たときの直し方を覚えます → ロブロックス(Roblox)の「Infinite yield possible」の直し方
- スクリプトが思いどおりに動かない → ロブロックス(Roblox)でスクリプトが動かないときの確認手順
- 作ったゲームを友達に遊んでもらいたい → ロブロックス(Roblox)のゲームを公開する方法