ボタンは、プレイヤーが新しいエリアのロックを解除したり、ポイントを与えたり、宝物を発見したりする場面で使われます。プレイヤーがボタンに触れるたびに、色を変えたり音を鳴らしたりするなど、ボタンが操作されたことが分かるようにする必要があります。
ここの例では、橋を渡れるようにするためにボタンが使用されます。ボタンが押されると緑に変わり、プレイヤーは橋を渡れるようになります。ボタンを押さなければ、プレイヤーは橋の上から落ちてしまいます。
パーツを設定する
- 谷や川などに橋を設置します。
- 橋のパーツを作成し、名前を Bridge に変更します。
- Properties(プロパティ)ウィンドウで Bridge を選択します。
- Transparency(透明度)を 0.5 に設定します。透明度0が見える状態で、1が見えない状態です。
- Anchored(固定)をONにします。
- CanCollide(衝突)のOFFをします。(OFFが通り抜ける)
- テストプレイします。橋は半透明になっていて、渡れないはずです。
ボタンを作成する
橋の設定が終わったので、次はボタンを作成します。
- Button という名前の新しいパーツを作成します。
- ボタンの色を赤に変えます。
- ボタンを固定します。
- ボタンを少し浮かし、どこにも触れていない状態にします。
ボタンをインタラクティブにする
今回は、Touchedイベントを使ってトラップを作るのではなく、橋を使えるようにするボタンを作るために使います。
スクリプトを作成する
橋を渡れるようにするには、プレイヤーがボタンに触れたときに実行されるカスタム関数の中で、「bridge.CanCollide = true」というコードを使用します。もう、以下の手順を読まなくて分かると思います。
正解のコードを見る前に自分でコーディングしてみましょう。
- ActivateBridge という名前のボタンにスクリプトを挿入します。
- 新しいスクリプトで Hello World を削除します。
- 橋とボタンの変数を作成します。
- ボタンに触れると以下の動作を行うカスタム関数を作成します。
- “button touched”とOutputウィンドウに表示する
- ボタンの色を緑に変える
- 橋の透明度を0にして見えるようにする
- コード bridge.CanCollide = true を使用して橋を渡れるようにする
- 関数をボタンの 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)
スクリプトをテストする
- テストプレイで、プレイヤーがボタンを押すと橋を渡れるようになるか確認します。
コードのトラブルシューティング
問題:ゲーム開始時にすでに橋が渡れる状態になっている。
・パーツが固定され、他のものに触れていないことを確認します。パーツが地形などの他のパーツに触れていると、意図せず buttonPressed() 関数が実行されてしまうことがあります。
トラブルシューティングのヒント
・Outputウィンドウに“Bridge is not a valid member of Workspace”というエラーが表示された場合、橋の名前を確認してください。スクリプトの Bridge は Exploere のものと同じ名前を使用する必要があります。・
part.Touched:Connect(buttonPressed) が buttonPressed() 関数の外にあることを確認します。
[ 【5】if/then文を使用する ]