2-3 パラメータの練習ーボタン

プレイヤーはボタンを使用して、新しいエリアのロックを解除したり、ポイントを与えたり、宝物を開けたりできます。プレーヤーがボタンに触れるたびに、色が変わる、音が出るなど、ボタンを操作したプレーヤーに何らかの形で知らせる必要があります。
この例では、ボタンにタッチすることで橋が通れるようにします。ボタンに触ると、そのボタンが緑色に変わり、プレイヤーは橋を渡れるようになります。ボタンにタッチしないと橋からすり抜けて落下します。

橋を作る

橋の制作から始めます。

  1. プレイヤーが橋を必要とする場所をゲーム内に作成します。
  2. 橋のパーツを作成し、名前を Bridge に変更します。
  3. プロパティウィンドウで、Bridge を選択します。
    • 透明度を 0.5 に変更します。0 は不透明で、1 は完全な透明を表します。
    • アンカーに設定し動かないようにします。
    • 通り抜けられるように、CanCollide のチェックを外します。
  4. ゲームをテストしてください。橋は半透明で、プレイヤーはまだその上を歩けないはずです。

ボタンを作成する

次にボタンを作ります。

  1. Button という名前の新しいパーツを作成します。
  2. ボタンの色を赤に変更します。
  3. ボタンをアンカーに設定し固定します。
  4. ボタンを移動させ、少し浮いて何にも触れないようにします。これは Touchedイベントが誤って発生しないようにするためです。このまま学習を進めて行くと、地面においても正常に動作するようにできるようになります。

ボタンをインタラクティブにする

今回は Touched イベントを使用して、橋が渡れるようになるボタンを作ります。橋を通り抜けできないようにするには、プレイヤーがボタンに触れたときに実行される関数内で「bridge.CanCollide = true」というコードを使用します。これだけ説明すれば、今まで学んできたことの応用でプログラムが作れるでしょう。

  1. ActivateBridge という名前のパーツ(ボタン)に新しいスクリプトを挿入します。
  2. print文を削除します。
  3. 橋とボタンのパーツにアクセスしやすいようにそれぞれを変数に代入しておきます。
  4. ボタンがタッチされたときに次のことを行う関数を作成します。
    • 「ボタンに触れた」と表示します。
    • ボタンの色を赤から緑に変えます。
    • 橋の透明度を 0 に変更して、橋が不透明にします。
    • 「bridge.CanCollide = true」を使用して橋を通れるようにします。
  5. 関数をボタンのTouchedイベントに接続します。
  6. スクリプトをテストし、ボタンに触れたときにブリッジが表示されることを確認します。

頭の中で上記のような流れが見えると、プログラムが作成できると思います。

-- このスクリプトをボタンに挿入する
-- ボタンに触れると、それを緑色にし、橋が通れるようになる

local button = script.Parent
local bridge = game.Workspace.Bridge

local function buttonPressed()
    print("button touched")
    button.Color = Color3.fromRGB(0, 170, 0)  -- ボタンの色を緑にする
    bridge.Transparency = 0   -- 橋を不透明にする
    bridge.CanCollide = true  -- 通り抜けできないようにする
end

button.Touched:Connect(buttonPressed)  -- タッチイベントの接続

補足

  • 「bridge.Transparency = 0」の Transparency はパーツの透明度を表すプロパティです。0から1の間で指定できます。0が不透明で、1が完全な透明になります。もちろん少数も措定でき、0.5 は透明度50%ということになります。
  • 「bridge.CanCollide = true」の CanCollide は通り抜けできるかどうかを表すプロパティです。bool型と言いますが、false もしくは true のどちらかを設定できます。true を設定すると通り抜けできないようになります。

トラブルシューティング

正常に動作しない場合は次のところを確認してください。

  • 橋のパーツは「Bridge」になっていますか? 大文字、小文字は正しいですか?
  • ボタンのパーツはどこにも触れていませんか? 空中に固定されていますか?

コメントを残す