【4】パラメータとイベント(ボタン)

ボタンは、プレイヤーが新しいエリアのロックを解除したり、ポイントを与えたり、宝物を発見したりする場面で使われます。プレイヤーがボタンに触れるたびに、色を変えたり音を鳴らしたりするなど、ボタンが操作されたことが分かるようにする必要があります。

ここの例では、橋を渡れるようにするためにボタンが使用されます。ボタンが押されると緑に変わり、プレイヤーは橋を渡れるようになります。ボタンを押さなければ、プレイヤーは橋の上から落ちてしまいます。

パーツを設定する

  1. 谷や川などに橋を設置します。
  2. 橋のパーツを作成し、名前を Bridge に変更します。
  3. Properties(プロパティ)ウィンドウで Bridge を選択します。
    • Transparency(透明度)を 0.5 に設定します。透明度0が見える状態で、1が見えない状態です。
    • Anchored(固定)をONにします。
    • CanCollide(衝突)のOFFをします。(OFFが通り抜ける)
  4. テストプレイします。橋は半透明になっていて、渡れないはずです。

ボタンを作成する

橋の設定が終わったので、次はボタンを作成します。

  1. Button という名前の新しいパーツを作成します。
  2. ボタンの色を赤に変えます。
  3. ボタンを固定します。
  4. ボタンを少し浮かし、どこにも触れていない状態にします。

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

今回は、Touchedイベントを使ってトラップを作るのではなく、橋を使えるようにするボタンを作るために使います。

スクリプトを作成する

橋を渡れるようにするには、プレイヤーがボタンに触れたときに実行されるカスタム関数の中で、「bridge.CanCollide = true」というコードを使用します。もう、以下の手順を読まなくて分かると思います。

正解のコードを見る前に自分でコーディングしてみましょう。

  1. ActivateBridge という名前のボタンにスクリプトを挿入します。
  2. 新しいスクリプトで Hello World を削除します。
  3. 橋とボタンの変数を作成します。
  4. ボタンに触れると以下の動作を行うカスタム関数を作成します。
    • “button touched”とOutputウィンドウに表示する
    • ボタンの色を緑に変える
    • 橋の透明度を0にして見えるようにする
    • コード bridge.CanCollide = true を使用して橋を渡れるようにする
  5. 関数をボタンの Touchedイベントに紐づけます。
local button = script.Parent
local bridge = game.Workspace.Bridge
 
local function buttonPressed()
    print("button touched")
    button.BrickColor = BrickColor.new(0,0.7,0)
    bridge.Transparency = 0
    bridge.CanCollide = true
end
 
button.Touched:Connect(buttonPressed)

スクリプトをテストする

  1. テストプレイで、プレイヤーがボタンを押すと橋を渡れるようになるか確認します。

コードのトラブルシューティング
問題:ゲーム開始時にすでに橋が渡れる状態になっている。
・パーツが固定され、他のものに触れていないことを確認します。パーツが地形などの他のパーツに触れていると、意図せず buttonPressed() 関数が実行されてしまうことがあります。

トラブルシューティングのヒント
・Outputウィンドウに“Bridge is not a valid member of Workspace”というエラーが表示された場合、橋の名前を確認してください。スクリプトの BridgeExploere のものと同じ名前を使用する必要があります。
part.Touched:Connect(buttonPressed)buttonPressed() 関数の外にあることを確認します。

コメントを残す