見出し画像

正しいパスワードを入力すると開く扉を作る【RobloxStudio】

こんにちはけつべつです。

数字のパスワードをボタンで入力すると開く扉のモデルを使ってゲームを作っていました。
でも「ちょっとだけ物足りない」「もっと複雑なパスワードを設定したい!」と感じました。
そして思考錯誤して、なんとか数字以外の文字を使ったパスワードも設定できる装置を作ることができました。

ということで!この記事ではパスワードを設定できて、正しく入力できると扉が開く装置の作り方を書いていきます。








用意するもの

・workspaceの中に用意するもの

(TextButtonの表示を少し変えています)

パスワードが入力されると開くドア(Door)
パスワードを入力するために必要なパート(Part1)
パスワードが合っているかどうかを判断する時に押すボタンを入れるために必要なパート(Part2)
を用意します。

Part2の中にはSurfaceGuiを入れ、その中にScript、TextButton、StringValue(nyuryoku1)をいれます。
StringValueの中にはScriptが入っています。
画像ではTextButtonのサイズをブロックの表面と同じ大きさになるように調整したり、表示される文字を設定しています。

GUIを一つのブロックにまとめて表示せずにPart1とPart2で分けているのは、一つにまとめるとボタンのGUIが表示されなくなって正しく動かなくなる問題が起こったからです。



・ReplicatedStorageに用意するもの

RemoteEvent(text)をいれます


・StarterGuiに用意するもの

SurfaceGuiを挿入。その中にTextBox、さらにその中にLocalScriptを入れます。


SurfaceGuiのプロパティにあるAdorneeの空の枠をクリック。
ばつ印が出ている状態でWorkspaceにあるPart1をクリック。(エクスプローラーにあるPart1をクリックして設定することもできます)


(TextBoxの表示を少し変えています)

Adorneeの枠にPart1と表示されたらOK。SurfaceGuiがPart1に表示されます。TextBoxをクリックすると、キーボードで文字入力できるようになります。
TextBoxはStarterGuiの中で使わないとスクリプトが正しく動きません。それなのでこのような設定をしています。




スクリプトの内容

・StarterGui>SurfaceGui>TextBox>LocalScriptの内容

local textBox = script.Parent

local function onTextChanged()
	local text = textBox.Text
	game.ReplicatedStorage.text:FireServer(text)
end

textBox:GetPropertyChangedSignal("Text"):Connect(onTextChanged) --TextBoxTextが書き換えられるたびにスクリプトを実行

TextBoxに入力されたパスワードをRemoteEvent(text)に送るように書いています。
これでクライアント側(TextBoxがある場所)からサーバー側(nyuryoku1がある場所)に情報を伝えることができます。
TextBoxのTextが書き換えられるたびにこのスクリプトが実行されます。


・Part2>SurfaceGui>nyuryoku1>Scriptの内容

local remoteEvent = game.ReplicatedStorage:WaitForChild("text")

remoteEvent.OnServerEvent:Connect(function(player,text)
	script.Parent.Value = text
end)

RemoteEvent(text)から受け取ったパスワードをnyuryoku1.Valueに書き換えると書いてあります。


・Part2>SurfaceGui>Scriptの内容

local button = script.Parent.TextButton
local password = "ぱっすわーど" --設定したいパスワードを入力
local nyuryoku = script.Parent.nyuryoku1

local function pw()
	if nyuryoku.Value == password then --入力されたパスワードとpasswordが一致する時
	button.Visible = false --ボタンを非表示にして連続で押せないようにする
		workspace.Door.CanCollide = false
		workspace.Door.Transparency = 1
		print("ok")
	wait(5)
	button.Visible = true
		workspace.Door.CanCollide = true 
		workspace.Door.Transparency = 0 --五秒後にボタンとドアが元に戻る
	else --間違っている場合
		print("notok")
end
end
button.MouseButton1Click:Connect(pw)

passwordに設定したいパスワードを書きます。
TextButtonが押されたら実行。passwordとnyuryoku1.Valueに入力されたパスワードが同じだったら、Doorが透明になって衝突がオフになる。Doorが消えている間ボタンが押せないようにVisibleをオフにすると書いています。
間違っている場合はnotokとプリントされるようにしています。




テスト

設定したパスワードと同じ内容をキーボードで入力してからボタンを押すと…


ドアが消えて扉が開きました。これで通り抜けられるようになりました。
間違った内容を入力するとドアは開かず、notokとプリントされます。
成功です!

パソコンで入力できる文字ならどんなものでもパスワードに設定することができます。


絵文字もOK!

パスワードがあっているときにピンポーン!って音が出たら楽しくなりそうですね。これを使ったクイズゲームも作れそう。
ぜひ、アレンジしてゲームで使ってみてください。

この記事が誰かの役に立てたら嬉しいです!



〜おしまい〜