Thu thập xu
Thuộc phần Lập trình game Roblox trong hành trình Lua của Coddy. Bài học 15 trên 25.
Miếng đệm báu vật đặt set Coins thành 100. Một đồng xu sẽ add thêm 1, và điều đó tạo ra một vấn đề mới.
Touched kích hoạt một lần cho mỗi bộ phận cơ thể chạm vào, nên một bước đi lên đồng xu có thể kích hoạt nhiều lần. Mỗi lần thêm 1 điểm thì một đồng xu sẽ cho nhiều điểm.
Cách khắc phục là dùng debounce: một biến ghi nhớ “việc này đã xảy ra rồi” và khiến code bỏ qua các lần lặp lại:
local used = false
button.Touched:Connect(function(hit)
if not used then
used = true
print("Pressed!")
end
end)not used là true khi used là false, nên chỉ lần chạm đầu tiên mới vượt qua if not used. a and b chỉ là true khi cả hai đều true: if player and not used then yêu cầu có người chơi và nút chưa được dùng.
Khi một vòng lặp kết nối nhiều bộ phận, hãy tạo biến bên trong vòng lặp để mỗi bộ phận có biến riêng. value += 1 là cách viết ngắn của value = value + 1.
Thử thách
Trung bìnhĐể mỗi đồng xu chỉ cho đúng 1 Coin: hiện tại, đi qua một đồng xu sẽ nhận được nhiều Coin.
- Bên trong vòng lặp
for, trướcConnect, thêmlocal collected = false. - Đổi điều kiện kiểm tra thành
if player and not collected then. - Đặt
collected = truelàm dòng đầu tiên bên trong điều kiện đó.
Nhấn Chơi rồi đi qua một đồng xu: Coins tăng đúng 1. Sau đó nhấn Kiểm tra.
Tự làm thử
local Players = game:GetService("Players")
local coins = workspace.Coins
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local coinsValue = Instance.new("IntValue")
coinsValue.Name = "Coins"
coinsValue.Value = 0
coinsValue.Parent = leaderstats
end)
for _, coin in coins:GetChildren() do
coin.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.leaderstats.Coins.Value += 1
end
end)
end
Tất cả bài học trong Lập trình game Roblox
2Vòng lặp và hàm
Hàng cột trụDựng cầu thangDựng tòa thápNhà máy sản xuất đồng xuĐèn nhấp nháyCây cầu biến mất5Trò chơi đầu tiên của bạn
Obby đầu tiên của bạn3Sự kiện và người chơi
Tấm đệm cảm ứngSàn dung nhamLeaderstatsAi đã chạm vào?Thu thập xuXu xuất hiện lạiCửa xuTự luyện tập: Trình biên dịch Lua online