ツール(Tool)の基本的な仕組みを理解します。ツールボックスにある鍵を使ってドアを開けるというプログラムを作ります。
登場する英単語
Starter Pack | スターターパック | 初めから所持するツールはここに入れる |
Players | プレイヤーズ | game下に位置するオブジェクト、ゲームにいるプレイヤーが入る |
Player | プレイヤー | Players下に位置するオブジェクト、プレイヤー情報 |
Character | キャラクター | Playerのプロパティ、Workspaceに表示されているキャラクターモデルが入る |
Backpack | バックパック | プレイヤーが所持しているツールが入る場所 |
Handle | ハンドル | ツールに存在するパーツ |
チェックポイント
- ツール(Tool)とはプレイヤーが持つことができるアイテムのこと
- ツールボックスに入っているツールを取得すると「Put this tool into the starter pack?」というメッセージが表示される
- 「Yes」を選択すると「Starter Pack」に入る
- ゲーム開始時から所持するツールは「Starter Pack」に入れる
- 「Starter Pack」に入れられるものは「Tool」というオブジェクトのみ
- 「No」を選択すると「Workspace」に入る
- プレイヤーがゲームに入ると「Players」に「Player」追加される
- さらにプレイヤーのModelは、Workspaceの方にも追加される
- Playerのプロパティ「Character」に追加されたModelが設定される
- Playerオブジェクトには、ユーザーIDやキャラクター名などの情報が含まれる
- Playerの「Backpack」には、装備しているツールが入る
- ツールを装備すると「Backpack」からアイテムが除外され、キャラクターモデルの中に移動する
- タッチイベントは何回も呼ばれることが多いので、変数などを利用して制御する
local door = script.Parent
local touch = false
door.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and touch == false then
local key = character:FindFirstChild("Key")
if key then
touch = true
door.CanCollide = false
door.Transparency = 1
wait(1)
key:Destroy()
door.CanCollide = true
door.Transparency = 0
touch = false
end
end
end)
- 所持するツールは重複しないように、すでに持っているかどうかをチェックする
local keyBox = script.Parent
local clickdetector = keyBox.ClickDetector
local function checkHaveItem(player,item)
local character = player.Character
if character:FindFirstChild(item) then
return true
end
if player.Backpack:FindFirstChild(item) then
return true
end
return false
end
clickdetector.MouseClick:Connect(function(player)
if checkHaveItem(player,"Key") == false then
local key = keyBox.Key
local item = key:Clone()
item.Parent = player.Backpack
end
end)
5 thoughts on “第20回 ~鍵を拾ってドアを開ける~”
コメントを残す コメントをキャンセル
コメントを投稿するにはログインしてください。
textlabelの文字を左寄せにする方法ってありますか?
TextLabelのTextXAignmentをLeftに設定します。
ありがとうございます!
パーツに触れたらServerStorageのツールがプレイヤーの所持品になるようにするにはどうすればいいですか?
こういう感じになります。
local tool = ServerStotage.Tool:Clone()
tool.Parent = player.Backpack
もちろん、すでにそのツールを持っているかを判断しないと無数のツールをゲットしてしまいますのでそれらの処理も必要になります。
https://roblox-jp.com/reference/tool/