ボタンは、プレイヤーが新しい領域をアンロックし、ポイントを付与し、宝物を明らかにするのに使用できます。プレイヤーがボタンをタッチするたびに、色を変更したり、音を出したりしていることをプレイヤーに知らせるためのフィードバックを与える必要があります。
この例では、ボタンは橋を有効にするために使用されます。ボタンが押されると、緑に変わり、プレイヤーは橋を使用できるようになります。プレイヤーがボタンを押さなかった場合、それを歩こうとしたときに橋を通り抜けます。
橋を作成する
ブリッジを設定して開始します。
ゲーム内でプレイヤーが橋を必要とするエリアを作成します。
ブリッジ用のパーツを作成し、名前を Bridge に変更します。
プロパティウィンドウで、ブリッジを選択します:
- 透明度を 変更 に .5。透明度のために、0 が表示され、1 は非表示です。
- チェック アンカー 。
- チェックを外す CanCollide 。
ゲームをテストし、橋は霧のように見え、人々はまだそれを歩くことができないはずです。
ボタンを作成する
ブリッジが設定されたので、ボタンを作成します。
- 新しいパーツ名 ボタン を作成します。
- ボタンの色を赤に変更。
- ボタンをアンカー 。
- ボタンを動かして、僅かに浮いて何も触らないようにします。これは、Touchedイベントが偶然に発射しないようにするためです。
ボタンをインタラクティブにする
今回は、Touched イベントを使用してトラップを作成するのではなく、橋を使用可能にするボタンを作成するために使用します。ブリッジを衝突可能にするには、プレイヤーがボタンをタッチすると実行されるカスタム関数内のコード bridge.CanCollide = true を使用してください。次のステップを完了するために必要なものはすべて知っています。
コードソリューションを見る前に、自分でそれを理解しようとしてください。
- 新しい スクリプト を ActivateBridge という名前のボタンに挿入します。
- 削除 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)
コードをトラブルシュートする
問題: ゲームが開始すると、ブリッジはすでに固くなっています。: 部品が固定されていて、何かに触れていないことを確認してください。パーツが何かに触れ、地形や他のパーツなどと接触し、buttonPressed() 関数が誤発動する可能性があります。 問題: 出力ウィンドウにエラーが表示され、「ブリッジはワークスペースの有効なメンバーではありません」と言っています 以フォロー中をチェックしてください:
- ブリッジの名前。スクリプトのブリッジは、エクスプローラーと同じように正確に名前付ける必要があります。
- その 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)