Menu
CoddyTech

Những cánh cửa xoay

Bài học 3 trên 25 trong khóa học Trò chơi Roblox: thoát khỏi bóng tối của Coddy.

Cửa sảnh có ProximityPrompt: khi ở gần, người chơi sẽ thấy "E Open" (chạm vào màn hình điện thoại), nhấn vào đó sẽ kích hoạt Triggered của prompt cùng với người chơi.

Cửa xoay quanh bản lề, không phải ở giữa. Mô hình cửa có một phần Hinge vô hình ở cạnh cửa. Vị trí của tấm cửa, tính từ bản lề, là hinge.CFrame:ToObjectSpace(panel.CFrame); xoay bản lề một phần tư vòng rồi đặt tấm cửa trở lại vị trí đó, bạn sẽ có cánh cửa mở:

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()

Tween giúp cửa mở xoay thay vì nhảy bật. Khi cửa mở, thuộc tính Open của cửa được đặt và prompt bị tắt.

challenge icon

Thử thách

Dễ

Mở cánh cửa ở sảnh bằng cách xoay cánh cửa.

  1. Lấy TweenService. Viết openDoor(door): đặt thuộc tính Open thành true và tắt door.Panel.Prompt.
  2. Sau đó, tạo tween cho door.Panel trong 0.6 giây để đưa nó đến goal của phần thân, xoay một phần tư vòng theo chiều dương: math.rad(90).
  3. Viết setupDoor(door): door.Panel.Prompt.Triggered sẽ mở cửa nếu cửa chưa mở. Gọi hàm này cho workspace.Rooms.Lobby.Door.

Nhấn Chơi rồi nhấn E ở cửa: cửa sẽ xoay ra xa bạn. Sau đó nhấn Kiểm tra.

Tự làm thử

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

-- Đêm xuống: không có ánh mặt trời, khắp nơi chỉ có chút ánh sáng và sương mù
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")

-- Bài học 3: Cửa đung đưa sẽ được thêm vào đây

-- Mỗi người chơi: mỗi lần hồi sinh có một chiếc đèn pin
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)

Tất cả bài học trong Trò chơi Roblox: thoát khỏi bóng tối

Tự luyện tập: Playground Roblox