Skip to content

Hướng dẫn: làm một obby ​

Obby là đường vượt chướng ngại: nhảy từ bệ này sang bệ khác, tránh dung nham, tới đích. Trong bài này bạn dựng một obby bằng các đối tượng gameplay của KHIM - chạy được mà không cần code - rồi thêm một script ngắn cho vạch đích.

Mất khoảng 20 phút. Bạn cần cài sẵn KHIM Engine (Cài đặt và world đầu tiên).

1. Tạo world ​

Ở Home, bấm New world, đặt tên My Obby, chọn Flat ground và bấm Create. Bạn có một mặt đất tên Ground và một SpawnLocation - nơi người chơi xuất hiện.

TIP

Mẫu Obby là một bản hoàn chỉnh của đường đua kiểu này. Mở nó sau để so sánh.

2. Dựng các bệ ​

  1. Chèn một Part (nút + trên thanh công cụ, hoặc chuột phải vào khung nhìn).
  2. Trong Inspector đặt Size là 6, 1, 6. Giữ nguyên Anchored - part đã neo thì không bao giờ rơi hay bị đẩy.
  3. Di chuyển nó (Ctrl 2) cách điểm hồi sinh một bước nhảy: khoảng 10 unit về phía trước và cao 1 unit.
  4. Bấm Ctrl D để nhân bản, rồi dời bản sao xa thêm một bước nhảy. Bấm Ctrl D lần nữa: mỗi bản sao mới lại cách bản trước đúng chừng ấy, nên cả một dãy bệ chỉ là một lần kéo và vài lần Ctrl D.
  5. Tô màu cho các bệ. Đổi tên chúng trong Hierarchy (F2): Stage1, Stage2...

Thỉnh thoảng bấm F5 để chắc mọi cú nhảy đều làm được. Nhân vật đi 20 unit một giây và nhảy cao khoảng 6 unit.

3. Thêm dung nham ​

  1. Chèn một part mỏng ngang qua một bệ - kích thước 3, 0.2, 2 - tô đỏ với vật liệu Neon. Đặt tên Lava.
  2. Đang chọn nó, mở Insert Object (chuột phải vào dòng của nó trong Hierarchy) và chọn Hazard trong nhóm Gameplay (no script needed).

Thế là xong: Hazard làm đau ai chạm vào part của nó. Damage mặc định là 100, cả một thanh máu, nên dung nham giết ngay. Số nhỏ hơn thì trừ máu mỗi giây người chơi còn đứng trên đó.

4. Thêm checkpoint ​

Đặt một Checkpoint lên vài bệ một lần (chọn bệ, Insert Object > Checkpoint). Sau khi chạm vào, người chơi chết sẽ hồi sinh ở đó thay vì ở điểm xuất phát.

5. Thêm xu ​

  1. Chèn một Sphere, kích thước 1.5, 1.5, 1.5, màu vàng, lơ lửng trên một bệ. Đặt tên Coin.
  2. Insert Object > Pickup vào nó.

Pickup biến part thành vật nhặt được: neo và đi xuyên qua được, nó cộng 1 vào chỉ số Coins của người chơi (một cột trong bảng người chơi, tự tạo lần đầu) và quay lại sau 10 giây. Đổi Stat, Amount và Comes back after trong Inspector. Nhân bản đồng xu dọc đường đua.

6. Bệ nhảy ​

Chèn một part phẳng ở chỗ cú nhảy quá xa, và đặt một Boost lên nó. Chạm vào sẽ được tăng tốc độ đi và lực nhảy trong vài giây (Walk speed, Jump power và Lasts trong Inspector).

7. Vạch đích ​

Món gameplay cuối cần vài dòng code. Dựng một bệ vàng lớn ở cuối tên Finish, rồi chuột phải vào nó trong Hierarchy > Insert Object > Script. Nhấp đúp để mở script và thay nội dung bằng:

lua
-- Vạch đích: thêm một lần thắng vào bảng người chơi, một dòng trong chat, rồi về lại đầu.
local finish = script.parent
local arriving = {}

players.joined:connect(function(player)
    player.stats.Wins = 0 -- cột "Wins" trong bảng người chơi
end)

finish.touched:connect(function(hit)
    local player = players.fromPart(hit)
    if not player or arriving[player.name] then return end
    arriving[player.name] = true

    player.stats.Wins += 1
    chat.send(player.displayName .. " đã lên tới đỉnh!")

    task.wait(1.5)
    player.position = world.SpawnLocation.position + vec3(0, 4, 0)
    arriving[player.name] = nil
end)

Nó làm gì:

  • script.parent là part chứa script - chính là Finish.
  • players.joined chạy một lần cho mỗi người chơi vào game. player.stats.Wins = 0 thêm cột Wins vào bảng người chơi (Tab).
  • finish.touched chạy mỗi khi có gì chạm vào part. players.fromPart(hit) đổi part vừa chạm thành người chơi, hoặc nil nếu đó không phải người chơi.
  • arriving ngăn một người thắng nhiều lần khi đứng trên bệ.
  • Gán player.position từ Script trên server là dịch chuyển họ.

Đọc Cơ bản về script để hiểu từng dòng.

8. Chạy thử kỹ ​

Bấm F5 và chơi hết đường đua. Kiểm tra:

  • mọi cú nhảy đều làm được, có và không có bệ nhảy;
  • dung nham giết, và bạn hồi sinh ở checkpoint gần nhất;
  • xu được đếm trong bảng người chơi và xuất hiện lại;
  • vạch đích cộng một lần thắng và đưa bạn về đầu.

Console (Ctrl J) hiện lỗi script màu đỏ - bấm vào để nhảy tới dòng lỗi. Xem Chạy thử và gỡ lỗi.

9. Go live ​

Lưu (Ctrl S), rồi bấm Go live (Alt P). Chọn Create a new game, đặt tên và bấm Create. Obby của bạn đã lên KHIM, ở chế độ riêng tư lúc đầu. Go live và Workshop giải thích cách công khai và cập nhật nó.

Làm thêm ​