Cơ chế nhảy là một khía cạnh cơ bản của nhiều trò chơi platformer, cho phép người chơi điều hướng các chướng ngại vật, tiếp cận các nền tảng cao hơn và thêm một lớp tương tác bổ sung vào lối chơi.
Trong Godot, một công cụ trò chơi mã nguồn mở phổ biến, việc triển khai cơ chế nhảy tương đối đơn giản và có thể nâng cao đáng kể mức độ tương tác và sự thú vị cho game của bạn.
Thiết lập game Godot
Trước khi đi sâu vào triển khai cơ chế nhảy, thiết lập cấu trúc cơ bản của game Godot. Bắt đầu bằng cách tạp một dự án 2D mới trong Godot. Trong bối cảnh này, tạo node KinematicBody2D làm nhân vật người chơi. Đính kèm một CollisionShape2D cho người chơi, xác định hình dạng của nó bằng RectangleShape2D.
Ngoài ra, hãy bao gồm một Sprite2D để thể hiện trình phát một cách trực quan. Tạo một số nền tảng ngang và dọc bằng cách sử dụng StaticBody2D trong cảnh game để cung cấp bối cảnh cho cơ chế nhảy.
Thêm code cho phép người chơi di chuyển sang trái và phải. Ngoài ra, hã kết hợp trọng lực cho chuyển động thực tế. Đây là đoạn mã GDScript mẫu để bắt đầu:
extends KinematicBody2Dconst GRAVITY = 800const MOVE_SPEED = 200var velocity = Vector2.ZEROfunc _physics_process(delta): var input_vector = Vector2.ZERO if Input.is_action_pressed("move_right"): input_vector.x += 1 if Input.is_action_pressed("move_left"): input_vector.x -= 1 velocity.y += GRAVITY * delta velocity = move_and_slide(velocity, Vector2(0, -1)) velocity.x = input_vector.x * MOVE_SPEED
Dùng câu lệnh if-else để xác định chuyển động ngang của người chơi. Nếu người chơi nhấn move_right, hãy thêm 1 vào input_vector.x. Nếu người chơi nhấn move_left, trừ 1 từ input_vector.x. Cách tiếp cận này cho phép kiểm soát chuyển động mượt mà hơn và loại bỏ các xung đột tiềm ẩn khi cả hai hành động được nhấn đồng thời.
Tích hợp nhảy đơn giản
Bây giờ hãy thêm tính năng nhảy cơ bản cho người chơi. Người chơi chỉ có thể nhảy khi họ ở trên bục. Thêm mã sau vào tập lệnh hiện có:
const JUMP_FORCE = -400var is_on_floor = falsefunc _physics_process(delta): ... is_on_floor = is_on_floor() if is_on_floor and Input.is_action_just_pressed("jump"): velocity.y = JUMP_FORCE
Với code này, hãy kiểm tra xem người chơi có ở trên nền tảng hay không bằng hàm is_on_floor(). Khi người chơi nhấn hành động nhảy, đặt vận tốc thẳng đứng thành giá trị lực nhảy, khiến người chơi nhảy.
Tích hợp nhảy kép
Để tăng thêm tính linh hoạt cho cơ chế nhảy của bạn, hãy triển khai tính năng nhảy kép. Người chơi sẽ có thể thực hiện cú nhảy thứ hai khi đang ở giữa không trung, cho phép họ tiếp cận các nền tảng cao hơn nữa. Đây là một triển khai ví dụ:
const MAX_JUMP_COUNT = 3var jump_count = 0func _physics_process(delta): ... is_on_floor = is_on_floor() if is_on_floor: jump_count = 0 var is_jumping = Input.is_action_just_pressed("jump") if is_on_floor and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if jump_count < MAX_JUMP_COUNT and is_jumping: velocity.y = JUMP_FORCE jump_count += 1
Giới thiệu một biến jump_count để theo dõi số lần nhảy được thực hiện bởi người chơi. Hằng số MAX_JUMP_COUNT xác định số lần nhảy tối đa được phép. Người chơi chỉ có thể thực hiện lần nhảy thứ hai nếu họ vẫn ở trong số lần nhảy tối đa.
Tích hợp Jump Dash
Để làm cho cơ chế nhảy trở nên thú vị hơn, hãy triển khai tính năng jump dash. Tính năng này sẽ cho phép người chơi nhanh chóng di chuyển theo chiều ngang khi đang ở giữa không trung, cho phép họ di chuyển nhanh nhẹn qua các chướng ngại vật. Đây là một triển khai ví dụ:
const DASH_FORCE = 4000var can_dash = truefunc _physics_process(delta): ... is_on_floor = is_on_floor() if is_on_floor: jump_count = 0 can_dash = true var is_jumping = Input.is_action_just_pressed("jump") var dash = Input.is_action_just_pressed("dash") if is_on_floor and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if jump_count < MAX_JUMP_COUNT and is_jumping: velocity.y = JUMP_FORCE jump_count += 1 if can_dash and dash: velocity.x += DASH_FORCE can_dash = false
Giới thiệu một biến can_dash để theo dõi xem người chơi có thể thực hiện jump dash hay không. Khi người chơi nhấn hành động lao, hãy thêm một lực ngang (DASH_FORCE) vào vận tốc của người chơi, cho phép họ lao theo chiều ngang giữa không trung.
Trên đây là cách tạo cơ chế nhảy cho game tạo bằng Godot. Hi vọng bài viết hữu ích với các bạn.