Rule Making

コイン

取るとうれしい、集める楽しさを作るギミック

$

金色の丸いパーツが浮いていて、取ると消える。

このギミックのルール

プレイヤーが触ったら、コインを消して点数を増やす。

Studioで作るもの

CoinScript
  1. Partを1つ置いて、名前を Coin にする。
  2. ShapeをBallにして、色を黄色にする。
  3. Anchoredをオン、CanCollideをオフにする。
  4. Coinの中にScriptを入れる。

考え方の図解

1

コインに触る

2

Humanoidを探す

3

コインを消す

4

取ったことが分かる

Typing Time

手で書いてみよう

黄色の行は、コードの道案内です。声に出して読んでから、その下の命令をゆっくり手打ちしてみよう。

1行ずつ写す黄色の説明を読む数字を変えて実験する
-- 1. コインをつかまえるlocal coin = script.Parent -- 2. もう取られたかどうかをメモするlocal taken = false -- 3. コインに触ったら、この中が動くcoin.Touched:Connect(function(hit)    -- プレイヤーかどうか調べる    local humanoid = hit.Parent:FindFirstChild("Humanoid")     if humanoid and taken == false then        taken = true        -- コインを見えなくする        coin.Transparency = 1        -- もう触れないようにする        coin.CanTouch = false        print("コインをゲット!")    endend)
CanCollideをオフにすると、プレイヤーがコインにぶつからず取れる。
CanTouchをオフにすると、取ったあとに何度も反応しない。
printは、動いたかどうかをOutputで確認できる便利な命令。
点数システムは次の発展として作るとよい。

Remix Missions

改造ミッション

Power Up Code

改造ミッションのコード

できたギミックに少し足すだけで、ステージのルールが変わります。まず1つ選んで、黄色の説明を読みながら書いてみよう。

コインを回転させる

コイン用Scriptとは別に、回転用ScriptをCoinに入れると作りやすいです。

-- Coinの中に新しいScriptを入れるlocal coin = script.Parent while true do    coin.CFrame = coin.CFrame * CFrame.Angles(0, math.rad(4), 0)    task.wait()end

取ったら音を鳴らす

Coinの中にSoundを入れて、名前を GetSound にします。

-- Scriptの最初のほうに追加local sound = coin:WaitForChild("GetSound") -- コインを取ったところに追加sound:Play()

leaderstatsでスコアを増やす

プレイヤーのleaderstatsにCoinsがある時、1枚ずつ増やします。

-- if humanoid and taken == false then の中に追加local player = game.Players:GetPlayerFromCharacter(hit.Parent) if player then    local coins = player.leaderstats.Coins    coins.Value = coins.Value + 1end