ボタンはプレイヤーによって新しいエリアをアンロックしたり、ポイントを与えたり、宝物を明らかにするために使用できます。プレイヤーがボタンをタッチするたびに、他のプレイヤーにそれをインタラクトされていることを知らせるためにいくつかのフィードバックを与える必要があります。
この例では、ボタンを使用して橋を有効にします。ボタンが押されたとき、緑に変わり、プレイヤーが橋を使用できるようになります。プレイヤーがボタンを押さなかった場合は、橋を押して試して歩くと落ちてしまいます。
橋を作成
橋を設定して開始します。
プレイヤーが橋を必要とするエリアをゲーム中に作成します。
橋の部分を作成し、橋という名前を与えます。
プロパティウィンドウで橋を選択します:
- 透明度 を .5 に変更します。透明度 は、0 が表示され、1 が非表示になります。
- Check アンカー .
- Uncheck CanCollide 。
ゲームをテストし、橋はミスティに見えて、人々はまだそれを歩くことができません。
ボタンを作成
橋を設定したので、ボタンを作成します。
- ボタンという名前の新しいパーツを作成します。
- ボタンの色を赤に変更します。
- ボタンをアンカーする ボタン。
- ボタンを少し浮かせて、何も触っていないようにします。これは、Touchedイベントが意図しないように発動しないようにします。
ボタンをインタラクティブにする
この時、 Touched イベントを使用してトラップを作成する代わりに、ボタンを作成して橋を使用可能にするボタンを作成します。橋を使用可能にするには、 bridge.CanCollide = true 内のカスタム関数であるコードを使用します。次のステップ
コードのソリューションを見る前に、自分でそれを解決してみてください。
- ボタン名 ActivateBridge に新しい スクリプト を挿入します。
- Delete Hello World を削除します。
- 橋とボタンの変数を作成します。
- ボタンにタッチされたときに次のコードを実行する ローカル関数 を作成します:
- 印刷します "button touched" 。
- ボタンの色をタッチすると、赤から緑に変更します。
- 橋の透明度を 0 に変更して、可視にする。
- コードを使用して橋を使用可能にする bridge.CanCollide = true
- ボタンの Touched イベントに機能を接続します。
- スクリプトをテストし、ボタンがタッチされると橋が表示されることを確認します。
コードソリューション 以下には、1つのコードソリューションがあります
-- このスクリプトをボタンに挿入
-- ボタンに何かが触れると、ボタンが緑に変わります。
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)
コードのトラブルシューティング
問題: ゲームが開始すると、橋はすでに固定です。 部品がアンカーされていることを確認してください。部品は地形や他の部品に接触する可能性があり、ボタンを押してしまう可能性があります。 問題: 出力ウィンドウにエラーが表示され、「ブリッジはワークスペースの有効なメンバーではありません」と書いています。 フォロー中の項目をチェックしてください:
- あなたの橋の名前。スクリプト内の橋は、Explorer のように正確に名前付けされなければなりません。
- その part.Touched:Connect(buttonPressed) は buttonPressed() 機能の外にあります。
オプションコードチャレンジ
このレッスンでのスクリプトは、プレイヤーが特定のエリアから出ることを妨げるドアを維持するためにも使用できます。プログラミングスキルを練習し、次のことを実行してください:
- ドアの部品を作成します。
- ドアから離れた場所にボタンを作成します。
- このレッスンでスクリプトを変更して、ドアの透明度を変更し、プレイヤーが衝突しないようにします。
あなたのバージョンは以下のように見えるかもしれません:
local button = script.Parent
-- リマインダー: パーツ、ゲートの名前をプロジェクトにあるものと交換
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- ボタンを赤に変更してプレイヤーのフィードバックを取得する
button.BrickColor = BrickColor.Red() -- これを変更
-- ゲートを見えなくする
gate.Transparency = 1
-- ゲームプレイヤーがゲートを通り抜けることができるようになります
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)