Cách tạo hệ thống camera cho game 2D trong Godot

Hệ thống camera được thiết kế tốt có thể hấp dẫn người chơi và cho họ góc nhìn tốt hơn. Tạo hệ thống camera trong Godot đơn giản nhưng hiệu quả. Dưới đây là hướng dẫn chi tiết.

Mario

Tạo một game đơn giản

Trước khi bắt đầu, bạn cần tạo một thế giới game 2D và nhân vật trong Godot Game Engine mà camera có thể theo dõi.

Tạo cảnh 2D mới và thêm node CharacterBody2D. Nó sẽ hoạt động như nhân vật người chơi. Bên trong CharacterBody2D, thêm CollisionShape2D và đặt hình dạng của nó sang RectangleShape2D để cung cấp sự hiện diện vật lý của người chơi trong thế giới này.

Ngoài ra, bên trong CharacterBody2D, thêm node Sprite2D và gắn ảnh nhân vật người chơi vào nó. Tạo một script mới được gắn vào node CharacterBody2D và thêm code sau:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
    var velocity = Vector2()

    if Input.is_action_pressed('ui_right'):
        velocity.x += 1

    if Input.is_action_pressed('ui_left'):
        velocity.x -= 1

    if Input.is_action_pressed('ui_down'):
        velocity.y += 1

    if Input.is_action_pressed('ui_up'):
        velocity.y -= 1

    velocity = velocity.normalized() * speed
    move_and_collide(velocity * delta)

Với code này, nhân vật người chơi giờ có thể di chuyển theo cả 4 hướng và sẽ va chạm với các nền tảng.

Tạo game Godot đơn giản

Triển khai hệ thống camera theo dõi

Bước tiếp theo là tạo camera theo dõi chuyển động của người chơi. Thêm node Camera2D làm con của node CharacterBody2D. Điều này đảm bảo camera sẽ luôn theo dõi người chơi. Để làm chuyển động mượt mà hơn, kích hoạt thuộc tính làm mượt vị trí của node Camera2D.

$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true

Triển khai phạm vi và hạn chế camera

Việc hạn chế tầm nhìn của người chơi trong khu vực game thường rất quan trọng. Tuy nhiên, nếu không xử lý việc này đúng cách, camera có thể mở ra các vùng nằm ngoài phạm vi của game. Chúng có thể bao gồm các khoảng trống hoặc khu vực chưa hoàn thiện.

Godot cung cấp cách dễ dàng đặt các giới hạn camera và hạn chế chuyển động của nó trong khu vực chơi.

Trong thuộc tính node Camera2D, bạn có 4 biến: limit_left, limit_top, limit_right, và limit_bottom. Chúng quyết định các ranh giới của camera. Bạn có thể đặt những giá trị này theo kích thước thế giới game.

$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height

Thay thế your_game_area_width your_game_area_height bằng chiều rộng & cao của thế giới game. Tập lệnh này hạn chế hiệu quả camera trong khu vực mong muốn, cung cấp cách chơi rõ ràng và tập trung.

Xử lý tỷ lệ và độ thu phóng của camera

Tính năng phóng to và thu nhỏ có thể là công cụ giúp tạo ra những khoảnh khắc ấn tượng trong game. Ví dụ, bạn có thể muốn phóng to nhân vật người chơi trong một hành động mạnh mẽ hoặc thu nhỏ để hiện kẻ thù lớn hay xem toàn cảnh thế giới game.

Thế giới game

Godot khiến việc thu nhỏ, phóng to dễ dàng với thuộc tính zoom của node Camera2D. Thuộc tính này là Vector2, cấp thu phóng mặc định là (1,1). Giá trị cao hơn sẽ thu nhỏ, khiến các đối tượng được xem xuất hiện nhỏ hơn, còn giá trị thấp hơn sẽ phóng to, làm đối tượng xuất hiện lớn hơn.

Để phóng to, dùng:

$Camera2D.zoom = Vector2(0.7, 0.7)

Để reset chế độ thu phóng, dùng:

$Camera2D.zoom = Vector2(1, 1)

Giá trị bạn chuyển sang Vector2() quyết định cấp thu phóng trên trục X và Y. Một giá trị zoom (0.7, 0.7) có nghĩa camera sẽ phóng to, còn (1.5, 1.5) có nghĩa camera sẽ thu nhỏ.

Thiết kế game hoàn thiện

Bạn nên giữ giá trị giống nhau cho cả hai trục để duy trì tỉ lệ khung hình, nhưng bạn có thể thử nghiệm các giá trị khác để đạt được hiệu ứng độc đáo.

Hi vọng bài viết hữu ích với các bạn!

Thứ Ba, 15/08/2023 14:23
51 👨 165
0 Bình luận
Sắp xếp theo