プレイヤーはボタンを使用して、新しいエリアのロックを解除したり、ポイントを与えたり、宝物を開けたりできます。プレーヤーがボタンに触れるたびに、色が変わる、音が出るなど、ボタンを操作したプレーヤーに何らかの形で知らせる必要があります。
この例では、ボタンにタッチすることで橋が通れるようにします。ボタンに触ると、そのボタンが緑色に変わり、プレイヤーは橋を渡れるようになります。ボタンにタッチしないと橋からすり抜けて落下します。
橋を作る
橋の制作から始めます。
- プレイヤーが橋を必要とする場所をゲーム内に作成します。
- 橋のパーツを作成し、名前を Bridge に変更します。
- プロパティウィンドウで、Bridge を選択します。
- 透明度を 0.5 に変更します。0 は不透明で、1 は完全な透明を表します。
- アンカーに設定し動かないようにします。
- 通り抜けられるように、CanCollide のチェックを外します。
- ゲームをテストしてください。橋は半透明で、プレイヤーはまだその上を歩けないはずです。
ボタンを作成する
次にボタンを作ります。
- Button という名前の新しいパーツを作成します。
- ボタンの色を赤に変更します。
- ボタンをアンカーに設定し固定します。
- ボタンを移動させ、少し浮いて何にも触れないようにします。これは Touchedイベントが誤って発生しないようにするためです。このまま学習を進めて行くと、地面においても正常に動作するようにできるようになります。
ボタンをインタラクティブにする
今回は Touched イベントを使用して、橋が渡れるようになるボタンを作ります。橋を通り抜けできないようにするには、プレイヤーがボタンに触れたときに実行される関数内で「bridge.CanCollide = true」というコードを使用します。これだけ説明すれば、今まで学んできたことの応用でプログラムが作れるでしょう。
- ActivateBridge という名前のパーツ(ボタン)に新しいスクリプトを挿入します。
- print文を削除します。
- 橋とボタンのパーツにアクセスしやすいようにそれぞれを変数に代入しておきます。
- ボタンがタッチされたときに次のことを行う関数を作成します。
- 「ボタンに触れた」と表示します。
- ボタンの色を赤から緑に変えます。
- 橋の透明度を 0 に変更して、橋が不透明にします。
- 「bridge.CanCollide = true」を使用して橋を通れるようにします。
- 関数をボタンのTouchedイベントに接続します。
- スクリプトをテストし、ボタンに触れたときにブリッジが表示されることを確認します。
頭の中で上記のような流れが見えると、プログラムが作成できると思います。
-- このスクリプトをボタンに挿入する
-- ボタンに触れると、それを緑色にし、橋が通れるようになる
local button = script.Parent
local bridge = game.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) -- タッチイベントの接続
補足
- 「bridge.Transparency = 0」の Transparency はパーツの透明度を表すプロパティです。0から1の間で指定できます。0が不透明で、1が完全な透明になります。もちろん少数も措定でき、0.5 は透明度50%ということになります。
- 「bridge.CanCollide = true」の CanCollide は通り抜けできるかどうかを表すプロパティです。bool型と言いますが、false もしくは true のどちらかを設定できます。true を設定すると通り抜けできないようになります。
トラブルシューティング
正常に動作しない場合は次のところを確認してください。
- 橋のパーツは「Bridge」になっていますか? 大文字、小文字は正しいですか?
- ボタンのパーツはどこにも触れていませんか? 空中に固定されていますか?
[ 2-2 パラメータとイベント ]
[ 2-4 複数のパラメータと引数 ]