Rule Making

開くドア

スイッチや鍵で道が開く、冒険感のあるギミック

|]

閉まっているドアが、スイッチを踏むと上に上がる。

このギミックのルール

合図が来たら、ドアの位置を上や横に動かして通れるようにする。

Studioで作るもの

DoorDoorSwitchScript
  1. Partを1つ置いて、名前を Door にする。
  2. Partを1つ置いて、名前を DoorSwitch にする。
  3. DoorSwitchの中にScriptを入れる。
  4. DoorはAnchoredをオンにしておく。

考え方の図解

1

スイッチを踏む

2

Doorを探す

3

ドアを上へ動かす

4

通れる道ができる

Typing Time

手で書いてみよう

黄色の行は、コードの道案内です。声に出して読んでから、その下の命令をゆっくり手打ちしてみよう。

1行ずつ写す黄色の説明を読む数字を変えて実験する
-- 1. ドアを開けるスイッチをつかまえるlocal switch = script.Parent -- 2. 開けたいドアをWorkspaceから探すlocal door = workspace:WaitForChild("Door") -- 3. もう開いたかどうかをメモするlocal opened = false -- 4. スイッチに触ったら、この中が動くswitch.Touched:Connect(function(hit)    local humanoid = hit.Parent:FindFirstChild("Humanoid")     if humanoid and opened == false then        opened = true         -- 30回くり返して、ドアを少しずつ上げる        for i = 1, 30 do            door.Position = door.Position + Vector3.new(0, 0.2, 0)            task.wait(0.02)        end    endend)
for i = 1, 30 do は、同じ命令を30回くり返す書き方。
Vector3.new(0, 0.2, 0) は、少し上に動かすという意味。
一気に動かさず少しずつ動かすと、ドアが開くアニメーションになる。
openedで、ドアが何回も上がり続けるのを止めている。

Remix Missions

改造ミッション

Power Up Code

改造ミッションのコード

できたギミックに少し足すだけで、ステージのルールが変わります。まず1つ選んで、黄色の説明を読みながら書いてみよう。

横にスライドするドアにする

YではなくXを動かすと、横にスーッと開きます。

-- 上ではなく、横に少しずつ動かすdoor.Position = door.Position + Vector3.new(0.2, 0, 0)

3秒後に閉まるドアにする

開く前の位置を覚えておけば、あとで元に戻せます。

-- Scriptの最初のほうに追加local closedPosition = door.Position -- ドアを開いたあとに追加task.wait(3)door.Position = closedPositionopened = false

鍵を取ったら開くようにする

WorkspaceにKeyを置いて、鍵に触れたらドアを上げます。

-- Keyの中にScriptを入れるlocal key = script.Parentlocal door = workspace:WaitForChild("Door") key.Touched:Connect(function(hit)    local humanoid = hit.Parent:FindFirstChild("Humanoid")     if humanoid then        key:Destroy()        door.Position = door.Position + Vector3.new(0, 6, 0)    endend)