Trong phần này thì mình sẽ hướng dẫn bạn cách để có thể di chuyển giữa level 1,2,3,vv khi mà đi đến cuối cùng của 1 level.
| Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Tạo Scene mới
Đầu tiên, các bạn tạo 1 Scene mới với Area2D là node gốc.
Ở đây, mình sử dụng Area2D là vì mình sẽ tạo ra 1 khu vực và khi PLayer đi vào nó sẽ di chuyển tới level tiếp theo.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 35 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 31](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-31-12.png)
Xong sau đó các bạn save lại trong thư mục Scene.![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 36 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 32](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-31-38.png)
Tiếp theo đó add script vô cho nó nha.
Script thì bao gồm như sau:
extends Area2D
export (String,FILE) var LevelKeTiep
func _on_KhuVucDiChuyen_body_entered(body):
if body.name == "Player":
get_tree().change_scene(LevelKeTiep)
Mình khai báo 1 biến và biến này đặc biệt ở chỗ mình dùng export( đây là lênh sẽ làm cho biến xuất hiện bên ngoài Inspector để có thể dễ dàng edit)
Mình thêm (String,FILE) phía sau là để có thể chọn file từ ngoài Inspector.
Bạn có thể tham khảo thêm tài liệu ở đây: GDScript exports
Về phần cái hàm bên dưới thì bạn phải connect signal nó mới xuất hiện.
if body.name == “Player” là mình kiểm tra nếu như cái Body đi vào mà tên là Player ( tên scene nhân vật mà mình và bạn đã tạo) thì nó sẽ di chuyển sang Level được gán vào biến trên.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 38 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 34](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-48-24.png)
Bạn nhấn vào Area2D
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 39 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 35](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-50-53.png)
Qua tab Node nhấn 2 click vào body enter ( ở đây mình sử dụng body entered là vì Player là 1 KinematicBody2D nên mình sẽ sử dụng tín hiệu xác định khi 1 body đi vào Area2D)
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 40 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 36](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-49-01.png)
Bảng hiện ra thì chọn Area2D xong nhấn Connect.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 42 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 38](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-49-19.png)
Bạn có thể nhận biết đã connect signal thành công bằng cách xem 2 cái ký hiệu ở hai ảnh trên nhé.
Level mới
Sau khi làm xong các bạn tạo cho mình một level mới nha tương tự như cách bạn tạo Scene Map.![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 43 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 39](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-57-21.png)
Sau khi tạo xong 1 node 2D mới bạn đổi tên thành map2.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 44 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 40](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-57-35.png)
Và thay vì làm lại tilemap bạn có thể qua map đầu để copy nó.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 45 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 41](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-57-46.png)
Qua map 2 và paste nó ra.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 46 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 42](https://anonyviet.com/wp-content/uploads/2021/11/12-11-2021-11-57-59.png)
Sau khi dán ta được tilemap giống như Map đầu và bạn chỉ việc chỉnh lạ![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 47 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 43](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-00-03.png)
Map 2 của mình sau khi chỉnh lại.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 48 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 44](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-08-18.png)
Add Player và Background như Map 1 nhé, copy thôi là xong.
Instance khu vực dịch chuyển
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 49 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 45](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-01-21.png)
Bạn Instance node khuvucdịch chuyển vừa tạo vào Map1 ![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 50 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 46](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-01-33.png)
Chuột phải chọn editable children để có thể edit nó.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 51 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 47](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-01-45.png)
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 52 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 48](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-01-55.png)
Chọn CollisionShape2D và chọn shape cho nó.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 53 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 49](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-02-10.png)
Sau khi chọn shape xong nó sẽ hiện ra như này.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 54 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 50](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-02-44.png)
Và bạn kéo nó ra nơi chúng ta cần đổi level bằng cách nhấn vào KhuVucDiChuyen và nhấn vào icon move trên thanh công cụ chứ đừng kéo cái CollisionShape2D đi nha.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 55 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 51](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-03-27.png)
Mình đã di chuyển ra vị trị mình muốn và mình edit lại cái CollisionShape2D sao cho hợp lí.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 56 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 52](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-06-44.png)
Bạn sẽ chưa thể di chuyển được vì bạn chưa cho nó biết bạn muốn di chuyển qua scene nào cho nên là ở KhuVucDichChuyen nhấn vào icon thư muc.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 58 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 54](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-07-41.png)
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 59 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 55](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-08-41.png)
Tìm và chọn Map2 sau đó nhấn Open.
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 60 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 56](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-10-21.png)
Sau khi xong thì Map2 đã được add vào biến LevelKeTiep![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 61 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 57](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-11-11.png)
![[Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 62 [Tạo 2D Platformer Game với Godot] Phần 9: Di chuyển giữa các level 58](https://anonyviet.com/wp-content/uploads/2021/11/13-11-2021-12-15-46.png)
Ở trên khi mình bước vào sẽ được chuyển sang Map2.
Ở đây, bạn có thể áp dụng nhiều cách để có thể tận dụng tối đá nó như:
- Set camera limit ở trước khu vực di chuyển
- Thêm Sprite ở Scene KhuVucDiChuyen để dễ nhận biết.
Tổng kết
Trong phần này mình đã hướng dẫn bạn cách di chuyển giữa các level với nhau và tuỳ theo tính sáng tạo và hiểu biết của bạn thì có thể design ra nhiều khác.
Câu hỏi thường gặp
Làm thế nào để tạo khu vực chuyển cảnh giữa các level?
Tạo một Scene mới với Area2D làm node gốc. Thêm một script vào Area2D, sử dụng biến export (String, FILE) var LevelKeTiep để chọn file scene level tiếp theo. Kết nối tín hiệu body_entered với hàm _on_KhuVucDiChuyen_body_entered trong script để kích hoạt chuyển cảnh khi Player va chạm vào Area2D.
Tôi cần làm gì để Player chuyển sang level tiếp theo?
Đặt Area2D (khu vực chuyển cảnh) ở vị trí mong muốn trong level hiện tại. Khi Player chạm vào Area2D, script sẽ tự động gọi hàm get_tree().change_scene(LevelKeTiep), chuyển sang scene được chỉ định trong biến LevelKeTiep.
Nếu tôi muốn tạo thêm level, tôi cần thực hiện những bước nào?
Tạo một scene mới cho level đó (tương tự như tạo scene map). Sau đó, trong Scene của level trước, instance node khu vực chuyển cảnh và thiết lập biến LevelKeTiep trỏ đến scene level mới được tạo.





![[Tạo 2D Platformer Game với Godot] Phần 29: Lưu và load dữ liệu game 68 [Tạo 2D Platformer Game với Godot] Phần 29: Lưu và load dữ liệu game 61](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-04-43-13.png)
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 69 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 62](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-01-02-39-350x245.png)
![[Tạo 2D Platformer Game với Godot] Phần 27: Mở khoá level 70 [Tạo 2D Platformer Game với Godot] Phần 27: Mở khoá level 63](https://anonyviet.com/wp-content/uploads/2021/11/24-11-2021-12-17-23.png)
![[Tạo 2D Platformer Game với Godot] Phần 25: Tạo Menu khi hết Level 72 [Tạo 2D Platformer Game với Godot] Phần 25: Tạo Menu khi hết Level 65](https://anonyviet.com/wp-content/uploads/2021/11/23-11-2021-11-13-02.png)




