Menu
CoddyTech

摆动的门

Coddy Roblox 游戏:逃离黑暗 课程的第 3 课,共 25 课。

大厅的门上有一个 ProximityPrompt:玩家靠近时会看到“E 打开”(在手机上则是轻触),按下后会触发提示的 Triggered,并传入玩家。

门绕铰链转动,而不是绕中间转动。门模型边缘有一个不可见的 Hinge 部件。面板相对于铰链的位置是 hinge.CFrame:ToObjectSpace(panel.CFrame);让铰链转四分之一圈,再把这个位置变换回去,就得到打开后的门:

local goal = hinge.CFrame * CFrame.Angles(0, math.rad(90), 0) * hinge.CFrame:ToObjectSpace(panel.CFrame)
TweenService:Create(panel, TweenInfo.new(0.6), { CFrame = goal }):Play()

补间会让门摆动,而不是突然跳到新位置。门打开后,会设置门的 Open 属性,并关闭提示。

challenge icon

挑战

简单

让大厅的门摆动打开。

  1. 获取 TweenService。编写 openDoor(door):将它的 Open 属性设为 true,并关闭 door.Panel.Prompt。
  2. 然后让 door.Panel 补间 0.6 秒,到达机身的 goal,旋转正四分之一圈:math.rad(90)。
  3. 编写 setupDoor(door):如果门还没打开,door.Panel.Prompt.Triggered 就会打开它。对 workspace.Rooms.Lobby.Door 调用它。

按“开始”,然后在门边按 E:门会朝远离你的方向摆开。接着按“检查”。

亲手试试

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local Settings = require(game.ReplicatedStorage.Settings)

-- 夜幕降临:没有阳光,四周只有微光,还起了雾
Lighting.ClockTime = Settings.ClockTime
Lighting.Ambient = Settings.Ambient
Lighting.OutdoorAmbient = Settings.Ambient
Lighting.FogColor = Color3.new(0, 0, 0)
Lighting.FogEnd = Settings.FogEnd
print("Lights out")

-- 第 3 课:会摆动的门,写在这里

-- 每位玩家:每次重生都会获得一个手电筒
Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function()
		local flashlight = ServerStorage.Flashlight:Clone()
		flashlight.Parent = player.Backpack
		local beam = flashlight.Handle.Beam
		flashlight.Activated:Connect(function()
			beam.Enabled = not beam.Enabled
		end)
	end)
end)

Roblox 游戏:逃离黑暗中的所有课

自己练习: Roblox 在线编辑器