ボタンはプレイヤーが新しいエリアをアンロックしたり、ポイントを与えたり、宝物を明らかにするために使用できます。プレイヤーがボタンに触れるとき、それはインタラクションが行われていることを知らせるためにフィードバックを提供する必要があります。たとえば、色を変えたり、音を鳴らしたりします。
この例では、ボタンを使用して橋をアクティブにします。ボタンが押されたとき、それは緑色に変わり、プレイヤーは橋を使用できるようになります。プレイヤーがボタンを押していない場合、橋の上を歩こうとすると落ちてしまいます。
橋を作る
まず、橋をセットアップします。
プレイヤーが橋を必要とするエリアを環境に作成します。
橋のためのパーツを作成し、名前を Bridge に変更します。
橋を選択し、プロパティウィンドウで:
- Transparency を .5 に変更します。Transparency において、0 は表示され、1 は表示されません。
- Anchor にチェックを入れます。
- CanCollide のチェックを外します。
経験をテストすると、橋は霧がかかった外観になり、まだ人がその上を歩くことはできません。

ボタンを作る
橋のセットアップが完了したので、ボタンを作成します。
Button という名前の新しいパーツを作成します。
ボタンの色を赤に変更します。
ボタンを Anchor します。
ボタンを少し浮かせて、何にも触れていない状態にします。これにより、Touched イベントが誤って発火しないようにします。

ボタンをインタラクティブにする
今回は、Touched イベントを使って罠を作成するのではなく、橋を使えるようにするボタンを作成します。橋が衝突可能にするためには、プレイヤーがボタンに触れたときに実行されるカスタム関数の中で bridge.CanCollide = true を使用します。他の必要なことはすべてわかっているので、以下の手順を完成させるために考えてみてください。
コードソリューションを見る前に、自分で考えてみてください。
- ボタンに ActivateBridge という名前の新しい script を挿入します。
- Hello World を削除します。
- 橋とボタンのための変数を作成します。
- ボタンがタッチされたときに次のことを行う ローカル関数 を作成します:
- "button touched" を印刷します。
- タッチされたときにボタンの色を赤から緑に変更します。
- 橋の透過性を 0 に変更して表示可能にします。
- bridge.CanCollide = true のコードを使用して、橋を使用可能にします。
- 関数をボタンの Touched イベントに接続します。
- スクリプトをテストし、ボタンがタッチされたときに橋が表示されることを確認します。
コードソリューション 以下は一つの可能なコードソリューションです。
-- Insert this script into button
-- Turns the button green when something touches the button.
local button = script.Parent
local bridge = 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)
コードのトラブルシュート
問題: 経験が始まると、橋がすでに固体です。 パーツが固定されており、何にも触れていないことを確認してください。パーツが地形や別のパーツに触れている場合、buttonPressed() 関数が誤って発火する可能性があります。
問題: 出力ウィンドウに「Bridge is not a valid member of Workspace」というエラーが表示されます。 以下を確認してください:
- 橋の名前。スクリプト内の橋の名前は、Explorer 内と正確に一致する必要があります。
- part.Touched:Connect(buttonPressed) が buttonPressed() 関数の外にあること。
オプションのコードチャレンジ
このレッスンのスクリプトは、特定のエリアからプレイヤーを排除するドアとしても使用できます。コーディングスキルを磨くために、以下を行ってください:
- ドアパーツを作成します。
- ドアから離れた場所にボタンを作成します。
- このレッスンのスクリプトを変更して、ドアの透過性を変更し、プレイヤーが衝突できないようにします。
あなたのバージョンは次のようになるかもしれません:
local button = script.Parent
-- Reminder: Replace the name of the part, Gate, with the one in your project
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- Changes button to red to give player feedback
button.BrickColor = BrickColor.Red() -- CHANGE THIS
-- Make the gate invisible
gate.Transparency = 1
-- Makes it so the player can walk through the gate
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)