[Lập Trình Game] Bài 13: Thu thập item trong Godot Engine

Nếu các bạn theo đến phần này được thì chứng tỏ bạn là 1 người rất chăm chỉ đấy :D.Đây là phần cuối cùng trong series lập trình game cơ bản với godot rồi. Về cái Menu – Tiếp Tục Và Cài đặt mình sẽ viết nó ở trong bài Tutorials vì nó nằm ngoài Series vì Series này chỉ hướng dẫn các bạn lập trình 1 tựa game cơ bản chứ không phải nâng cao.

Trong phần này mình sẽ hướng dẫn các bạn thu thập đồng xu nhé,bạn có thể xử dụng nó cho nhiều cách như là thu thập xong thì end game, không thu thập đủ trong thời gian thì thua,vv.

Groups:

Đây là 1 tính năng rất bổ ích của Godot nó giúp bạn có thể xác định 1 nút thông qua Group

Ở đây Group là nhóm và bạn có thể cho mỗi nút thành 1 nhóm khác nhau và dùng nó để xác định nút.

Bạn có thể xác định nút bằng lệnh is_in_groups() or nếu muốn lấy Node bố mẹ bằng node child thì xài get_parent_in_group()

Và để thêm node vào group bạn có thể làm 2 cách.

1. Là thêm ở Bảng Node kế bên Inspector

2. Là thêm bằng Script với lệnh add_to_group() và phần add_to_group() này bạn nên bỏ ở hàm _ready nhé vì hàm ready là hàm sẽ chạy code khi nó mới vào game vì vậy chúng ta sẽ bỏ nó vô đó để khi mới chạy game nó sẽ đc add vô group ngay lập tức

Setting Item:

Bạn có thể download asset Coin Games để lấy tài nguyên

Đầu tiên chúng ta sẽ tạo sence mới là Area2D.

Ở đây chúng ta sẽ xài area2d vì nó có singal nhận biết bodies hay area va chạm vào nó vì vậy chúng ta sẽ xài nó để khi player chạm vô nó thì nó sẽ gửi tín hiệu boides đã va chạm và thu thập item.

Lưu ý: Ở đây asset coin của chúng ta là SpriteSheet nha vì chỉ có 1 hàng nên Vframe sẽ = 0 Hframe thì bạn tự đếm.Nếu mờ thì reimport lại nha.

Rồi lưu nó lại

Tiếp đến chúng ta sẽ tạo Animation cho nó với AnimationPlayer.Tạo Node rồi tạo Aniamtion mới

Rồi add track vào

Chọn Frame nhé

Rồi các bạn cũng add khóa cho track như bình thường

Tiếp đến chúng ta sẽ tạo script cho cái area2d.

Ở đây chúng ta cần phải kiểm tra nếu bodies đi vô là player thì nó sẽ biến mất chứ không nếu con quái đi vô coin nó lại biến mất thì khổ :V và số coin của player sẽ + 1.

Vậy chúng ta sẽ kết nối tín hiệu body_entered

Và sau khi kết nối xong chúng ta sẽ tạo 1 lệnh if để xác định bodies là player với Groups.Sau đó biến coin của player sẽ + 1 rồi sẽ tự hủy(queue_free()).

func _on_Coin_body_entered(body):
          if body.is_in_group("Player"):
                    body.coin += 1
                    queue_free()

Rồi ở hàm _ready chúng ta sẽ chạy cái animation nhé.

Tiếp đến chúng ta sẽ tạo biến coin ở Player để khi player đi vào thì cái coin sẽ + 1

Rồi ở hàm func _ready() của Player thì các bạn thêm 1 lệnh cho nó vô Group

add_to_group("Player")

Rồi các bạn set mask/layer luôn  cho nó chắc ăn nha :v

Ở Project Setting mình sẽ thêm 1 mask/layer mới là Coin

Rồi các bạn set mask/layer cho nó nha

Mask:

Layer:

Rồi ở Mask của Player các bạn cũng tick vào ô Coin nha

Vậy là thành công r bạn có thể dùng nó để làm gì đó đều được nha, đều tùy thuộc vào trí tưởng tượng của bạn.

Tiếp đến mình sẽ tạo 1 cái Label để hiển thị số Coin nha

Vậy là đã hết Series lập trình game cơ bản với godot rồi sau này mình sẽ viết Tutorials 2D và Visual Scripting với Godot nhé.

Bạn có thể Download Full Project Code Game Godot của 14 bài ở đây.

Đánh giá post
Exit mobile version