Bây giờ bạn có một thế giới 3D, bài hướng dẫn này của hướng dẫn cho bạn cách thêm script đầu tiên của bạn để xác định một cơ chế thu thập tiền tệ. Cơ chế này cho phép người chơi thu thập tiền tệ, và tắt cơ chế thu thập tiền tệ nếu nó đã được thu thập gần đây.
Tạo ra Đồng xu
Trước khi bạn có thể lập trình bất cứ thứ gì, bạn cần phải có các đối tượng người dùng để sử dụng như xu của bạn. Giống như các tấm thẻ bể bơi bạn đã tạo ở phần trước, xu có thể là những đối tượng người dùng đơn giản Part .
Để tạo ra các xu:
Trong cửa sổ Explorer , thêm một thư mục mới vào cửa sổ World và đổi tên nó thành Coins .
Lấy một phần trục tròn vào tập tin Coins , sau đó đổi tên phần Coin thành 1> Coin1>.
Chọn bộ phận, sau đó trong cửa sổ Tên tùy thuộc ,
- Đặt Màu gạch lên Vàng .
- Đặt Vật liệu để Kim loại .
- Đặt Kích thước lên 0.6, 8, 4 .
- Vô hiệu hóa CanCollide . Điều này choEngine biết rằng các bộ phận khác nhau có thể vượt qua mảnh nhãn, có nghĩa là người chơi có thể đi qua mảnh nhãn để thu thập chúng.
- Kích hoạt Cố định . Điều này cho phép máy chủ không bao giờ thay đổi vị trí của đồng xu do bất kỳ simulazione liên quan đến vật lý, có nghĩa là người chơi có thể chạm vào đồng xu mà không ảnh hưởng đến vị trí của nó.
Nhân bản một vài xu nữa và đặt chúng xung quanh bản đồ để mục đích thử nghiệm.
Các bộ phận trụ cylinder của bạn bây giờ trông giống như những quả tiền và ngăn chặn simulazione vật lý, nhưng bạn cần thêm logic cho những quả tiền để người chơi có thể thu thập chúng.
Tạo Skript
Để có đồng xu để thu thập, bạn muốn phản ứng với người chơi chạm vào chúng. Roblox engine có thể thông báo cho bạn khi một cái gì đó chạm vào một đồng xu, nhưng bạn cần phải tuyên bố điều đó trong một script. Để tạo một script:
Trong cái Explorer window, hover over ServerScriptService and click the ⊕ button. A menu context displayed.
Từ menu ng上 context, select Script . Một script mới được hiển thị dưới ServerScriptService , which tells the engine to run the script on the máy chủ, and防止客户端 truy cập mã.
Đổi tên script thành CoinService .
Thay thế mã mặc định bằng mã sau đây:
-- Khởi tạo dịch vụ và biếnlocal Workspace = game:GetService("Workspace")local Players = game:GetService("Players")local coinsFolder = Workspace.World.Coinslocal coins = coinsFolder:GetChildren()local COOLDOWN = 10-- Định nghĩa hệ thống trao tặng sự kiệnlocal function onCoinTouched(otherPart, coin)if coin:GetAttribute("Enabled") thenlocal character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Người chơi đã chạm vào một xucoin.Transparency = 1coin:SetAttribute("Enabled", false)print("Player collected coin")task.wait(COOLDOWN)coin.Transparency = 0coin:SetAttribute("Enabled", true)endendend-- Tùy chỉnh người lắng nghe sự kiệnfor _, coin in coins docoin:SetAttribute("Enabled", true)coin.Touched:Connect(function(otherPart)onCoinTouched(otherPart, coin)end)endBây giờ, mỗi khi một người chạm vào một xu, xu sẽ biến mất trong 10 giây, và lệnh ra Player collected coin .
Giải thích mãCác mục tiếp theo mô tả cách script hoạt động chi tiết hơn.
Khởi tạo Dịch vụ và Biến đổi
Giống như với rất nhiều mã bạn đã có lẽ đã viết bằng nhiều ngôn ngữ khác, bạn định nghĩa các biến mà bạn cần sau đó ở đầu của script. Mã của chúng tôi làm theo theo dõi:
Lấy các thành phần dịch vụ - Roblox services cung cấp các chức năng tích hợp cho các tính năng phổ biến. Script đầu tiên có được các thành phần dịch vụ của Workspace 服务, which contains tất cả các đối tượng trong thế giới 3D, v
Lấy tham chiếu đến tất cả các loại tiền tệ - Khi đó, script thì tra xuất 3D workspace cho tất cả các tham chiếu đến coin objects với phương pháp GetChildren() . Phương pháp này trả về một阵 đựng tất cả nh
Định nghĩa một biến đổi toàn cầu - Biến đổi COOLDOWN được sử dụng sau đó để xác định thời gian ngừng hoạt động của một đồng xu sau khi nó được thu thập.
Khởi tạo Dịch vụ và Biến đổilocal Workspace = game:GetService("Workspace")local Players = game:GetService("Players")local coinsFolder = Workspace.World.Coinslocal coins = coinsFolder:GetChildren()local COOLDOWN = 10...
Định nghĩa xử lý sự kiện
Động cơ Roblox tạo thành các thành phần của Roblox vật lý, hành xử nhiều hệ thống trong thế giới 3D và xử lý nhiều hệ thống trong thế giới thực. Khi bạn quan tâm đến việc lập trình của riêng
Xác định có phải bật tiền xu - Mọi Class.Instance đều có một đặc tính Instance để xác định có hay không tồn tại của đối tượng trong thế giới 3D. Bạn có thể nhận được các đặc tính instan với phương thức
Xác định có phải một người chơi đã chạm vào một xu - Nếu một xu được bật, phương thức sử dụng dịch vụ người chơi để kiểm tra nếu đối tượng đã chạm vào một xu là một người chơ
Vô hiệu hóa tiền xu nếu một người chạm vào nó, và kích hoạt lại nó sau 10 giây - Cuối cùng, nếu một người chạm vào tiền xu, phương thức kích hoại tiền xu, chờ đ
Định nghĩa Handler Sự kiệnlocal function onCoinTouched(otherPart, coin)if coin:GetAttribute("Enabled") thenlocal character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Người chơi đã chạm vào một xucoin.Transparency = 1coin:SetAttribute("Enabled", false)print("Player collected coin")task.wait(COOLDOWN)coin.Transparency = 0coin:SetAttribute("Enabled", true)endendend
Kết Nối Người Xử Lý Sự Kiện
Tất cả các đối tượng 3D tương tự đều thừa hưởng từ BasePart và do đó có một sự kiện Touched() . Hệ thống sau đó kết nối nhà cung cấp đối tượng onTouchedEvent() đến mọi sự kiện chạm
Loop qua tất cả các xu - Loop qua mỗi trong số các xu bằng cách sử dụng itération chung.
Kết nối người điều khiển với sự kiện - Trong mỗi lần lặp của loạt, hệ bỏng được bật bởi mặc định, vì vậy nó có thể được thấy trong th
Kết Nối Trình Xử Lý Sự Kiệnfor _, coin in coins docoin:SetAttribute("Enabled", true)coin.Touched:Connect(function(otherPart)onCoinTouched(otherPart, coin)end)end
Thử nghiệm Nhà sản xuất
Đã đến lúc xem xét xem liệu cơ chế thu thập tiền xu như ý muốn của bạn có hoạt động không. Để thử nghiệm trải nghiệm của bạn:
Ở thanh menu, hãy nhấp vào nút Chơi . Studio tham gia vào chế độ thử nghiệm.
Di chuyển nhân vật của bạn để chạm vào một xu. Nếu các kịch bản của bạn hoạt động đúng cách, các cửa sổ Thoát hiển thị Player collected coin , và mục tốt sẽ biến mất trong 10 giây trước khi xu xuất hiện lại.