Dự án này là một ví dụ khác về việc sử dụng cho lò xo một cách thực tế. Đối với cầu này, người chơi sẽ chạm vào một nút để làm cho cầu bộ điều khiển trong một thời gian giới hạn trước khi nó biến mất. Để tạo một timer và hiển thị thời gian còn lại cho một người chơi, b
Tạo dự án
Cầu này có thể được bao gồm trong bất kỳ dự án trò chơi với các thử thách dựa trên chuyển động, như một obby.
Tạo các bộ phận
Tìm một nơi để xây dựng một cầu, như một dòng sông hoặc một khe lớn trong một obby. Tạo ba phần ancored like bên dưới.
- Hiển thị đồng hồ
- Cầu
- Cầu Nút
Khi không hoạt động, cầu sẽ được bán thành một phần. Để làm điều này, hãy chọn cầu Cầu và thay đổi các thuộc tính của nó.
- Độ trong suốt = 0.8
- CanCollide = Giả dối
Tạo màn hình hiển thị Timer
Khi vượt qua cầu, người chơi sẽ cần phải xem xem bao nhiêu giây trước khi cầu biến mất. Một cách để hiển thị hình ảnh hoặc chữ là bằng cách thêm một ô tượng được gọi là GUI Bề Mặt vào một phần. <
Chọn TimerDisplay và thêm một SurfaceGui . Sau đó, liên quan đến Surface Gui, thêm một TextLabel .
Chọn GUI Bề mặt. Trong tính Nhật ký, thực hiện các thay đổi sau:
- Đổi Mặt để bạn có thể thấy nhãn chữ trên màn hình bên trước của thời gian khi người chơi nhìn vào.
Chọn TextLabel. Trong Properties, thực hiện các thay đổi sau:
- Đặt Kích thước lên {1, 0},{1, 0} .
- Đặt TextScaled lên true.
- Set Text để trống. Văn bản sẽ được cập nhật bằng cách sử dụng script.
Cài đặt Script
Bây giờ thời gian đã ở địa điểmnày, tạo một script để điều khiển cầu và hiển thị số đếm ngược cho người chơi.
Trong phần Cầu, thêm một script mới có tên là TimedBridge. Trong script đó, tạo các biến sau đây.
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- Có bao lâu cầu sẽ được ổn địnhlocal timerDuration = 5
Lập trình hoạt ảnh sử dụng chạm
Để sử dụng cầu, bạn sẽ cần phải tạo hai chức năng. Một chức năng sẽ làm cho cầu có thể đi bộ và hiển thị thời gian. Ngược lại, chức năng khác sẽ lắng nghe nếu một người chạm vào nút bật cầu.
Tạo một chức năng mới có tên là startTimer() với một câu chữ in ở bên trong. Bạn sẽ sử dụng câu chữ in để thử nghiệm mã của bạn.
local timerDuration = 5local function startTimer()print("Countdown started")endLập hàm tên là buttonPressed() để kiểm tra nếu một hình người chạm vào nút. Hàm nên chấp nhận một biến của partTouched , và sau đó có một if statement trống nếu hình người được phát hiện ở phần đó.
local function startTimer()print("Countdown started")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendĐể khởi động người đếm thời gian, trong câu if, gọi hành động startTimer() .
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendDưới cùng của buttonPressed() , kết nối buttonPressed() chức năng với sự kiện Touched của nút.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)Chạy dự án. Chạm vào bộ phận và kiểm tra trong cửa sổ Ra mắt để xem tuyên bố in.
Mẹo dịch vụ
Tại thời điểm này, nếu cầu không hoạt động như ý muốn, hãy thử một trong những lựa chọn dưới đây. Vấn đề : Thông báo lỗi nói rằng: "... is not a valid member of workspace" .
Trong script TimedBridge, hãy kiểm tra tất cả các bộ phận được viết chính xác như những gì được thấy trong Explorer. Vấn đề : Không thể thấy các bộ phận.
Hãy đảm bảo ba phần đều được kết dính.
Kiểm tra thuộc tính Transparency cho cầu.
Tạo người đếm thời gian
Mỗi khi người chơi bước vào cầu, startTimer() sẽ làm cho cầu di động và khởi động người đếm thời gian. Khi thời gian người đếm thời gian đạt đến 0, cầu sẽ trở nên bất di chuyển, khiến bất kỳ ai không nhanh như kẻ đến bị té.
Làm cho cầu vượt di chuyển được
Để bắt đầu, script sẽ cần phải làm cho cầu vững chắc, hoặc có thể va chạm và sau đó bắt đầu một timer cho đến khi nó trở nên bất di chuyển.
Để làm cho cầu bộ động, trong startTimer(), thay đổi thuộc tính Transparency của cầu thành 0 (opaque) và thuộc tính CanCollide thành true.
local function startTimer()-- Làm cho cầu vượt có thể nhìn thấy và đi bộbridge.Transparency = 0bridge.CanCollide = trueendĐể tạo một timer đếm ngược, tạo một for loop với các giá trị sau đây.
- Điều khiển biến thể : có tên là count , đặt là timerDuration .
- Kết thúc : 0
- Tăng trưởng : -1
local function startTimer()-- Làm cho cầu vượt có thể nhìn thấy và đi bộbridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendĐể hiển thị thời gian cho người chơi, thay đổi chữ trong timerText để hiển thị số lần đếm bằng cách nhập timerText.Text = count . Mỗi lần for lặp qua một lần, nó sẽ hiển thị người chơi số lần đếm trong thời gian.
for count = timerDuration, 0, -1 dotimerText.Text = countendSử dụng chức năng task.wait để làm cho for loop chạy chỉ một lần một giây.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endChạy trò chơi. Khi bạn chạm vào nút, cầu nối sẽ xuất hiện và máy đếm thời gian sẽ bắt đầu, sau đó hoàn thành.
Giữ cầu khỏi khởi động lại
Nhưng hãy lưu ý, nếu bạn di chuyển xung quanh nút, thì thời gian sẽ tiếp tục khởi động lại.
Điều này là bởi vì for lặp được gọi mỗi lần bạn chạm vào nút và bắt đầu for lặp từ đầu. Để giữ cho thời gian khởi động không bị khởi động lại liên tục, bạn sẽ cần phải thêm một kiểu biến, một loại biến, sẽ kiểm tra xem startTimer() có Booleans được viết theo cùng một cách như các biến khác, nhưng thay vì sử dụng số hoặc chuỗi, chúng chỉ có thể được đặt thành true hoặc false. Ở tình huống này, script sẽ sử dụng một booleans để kiểm tra xem máy đang chạy trước khi bắt đầu nó.
Ở trên của mã của bạn, dưới biến của bạn, tạo một biến tên là timerActive và đặt nó thành false vì không ai đã nhấn nút này.
local timerDuration = 5local timerActive = falselocal function startTimer()Để đảm bảo thời gian chỉ bắt đầu khi timerActiveBoolean là false, thêm một điều kiện thứ hai vào if statement trong buttonPressed() .
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendĐể giữ startTimer() khỏi chạy trước khi hết thời gian, hãy đặt thanh kiểm tra timerActive lên trên.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueTrong chức năng startTimer(), sau khi lần vòng lặp, thiết lập cầu về các thuộc tính ban đầu của nó bằng cách thay đổi transparency cầu thành 0.8 và CanCollide thành false.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- Đối với lượt đếm được đếm từ timerDurationfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Làm cho cầu không thể đi bộbridge.Transparency = 0.8bridge.CanCollide = falseendMột điều cuối cùng để đặt lại cầu là thay đổi timerText thành một chuỗi rỗng như cách nó đã ban đầu. Sau đó, hãy thiết lập timerActiveBoolean lại thành giả.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseThử nghiệm và kiểm tra để đảm bảo cầu có thể được sử dụng nhiều lần.
Hoàn thành脚本 Cầu Vượt Thời Gian
local bridge = script.Parent
-- Nhận nút như nó được gõ trong Explorer
local button = workspace.ButtonBridge
-- Nhận phần cho màn hình
local timerPart = workspace.TimerDisplay
-- Nhận Text để hiển thị thời gian
local timerText = timerPart.SurfaceGui.TextLabel
-- Bao lâu người chơi phải vượt qua cầu
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Đối với lượt đếm được đếm từ timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Làm cho cầu không thể đi bộ
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("part touched")
if humanoid and timerActive == false then
print("starting timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)
Tổng kết
Các lỗ hợp có thể được kết hợp với các phương tiện trò chơi khác nhau để tạo ra các khoảnh khắc trò chơi hài hước. Trong hướng dẫn này, một cầu thời gian được tạo bằng cách sử dụng một for loop hoạt động như một countdown. Trong thời gian đếm ngược, người chơi được cung cấ