Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù

Trong phần trước mình đã hướng dẫn bạn cách tạo một con kẻ thù cơ bản nhất, thì trong phần này mình sẽ chỉ các bạn cách để kẻ thù di chuyển trên 1 bề mặt nổi.

Kẻ thù

Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù

Với cái bề mặt như trên, mình đảm bảo rằng khi con kẻ thù của bạn di chuyển tới một trong hai góc ngoài thì nó sẽ bị rớt xuống mà thường các game platformet là khi nó di chuyển tới góc nó sẽ quay trở lại như và chạm vào cái tường ở phần trước ấy.

Cho nên trong phần này mình sẽ hướng dẫn bạn cách làm điều này.

Add node

Đầu tiên, bạn thêm cho mình một node mới là RayCast2D ( đây là node dùng để truy vấn các mục tiêu va chạm với tia ).Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù 31

Đây chính là tia raycast  và mình sẽ sử dụng nó để kiểm tra xem nếu đã tới cái góc thì mình sẽ kêu con kẻ thù quay lại.Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù 32

Mình sẽ chỉnh lại cho nó ngắn hơn và bật nó lên.

Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù 33

func _physics_process(delta):

chuyendong.x = tocdo * huong_dichuyen
chuyendong.y += trongluc
chuyendong = move_and_slide(chuyendong,Vector2.UP)
animation.play("dichuyen")

if is_on_wall():
huong_dichuyen = huong_dichuyen * -1
scale.x = scale.y * huong_dichuyen

if $RayCast2D.is_colliding() == false:
huong_dichuyen = huong_dichuyen * -1
scale.x = scale.y * huong_dichuyen

Ở đây, mình chỉ thêm 3 dòng code thôi chứ không thêm gì nhiều cả.

Đầu tiên, dòng if:

  • Là mình sẽ gọi cái node raycast và kiểm tra xem nó có đang va chạm với cái gì không, nếu không thì tức là mình đã tới góc thì quay lại.
  • 2 dòng còn lại là dùng để xoay con kẻ thù thôi.
  • cái dòng scale.x = … thực ra bạn có thể bỏ bên ngoài if luôn chứ không cần bỏ trong hàm nhưng mình không làm vậy vì để tối ưu hoá nó, mình bỏ trong lệnh if cho nên là khi xảy ra nó mới chạy còn nếu bỏ ngoài thì lúc nào cũng chạy -> kết quả là gì thì bạn cũng đoán được rồi đó.

Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù 34

Đây là kết quả sau khi mình chạy game.

Cách hoạt động

Nếu bạn chưa hiểu thì mình sẽ giải thích cụ thể hơn ở đây nha.Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù 35

Đây là cái con kẻ thù khi nó chưa ra góc, và cái Raycast nó đang va chạm với tilemap như trong hình.

Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù 36

Còn đây là kẻ thù khi ra tới góc, bạn thấy đó cái raycast đã ra khỏi bên ngoài cái tilemap ( raycast va chạm tính ở góc nhọn của cái mũi tên), khi nó ra ngoài rồi là nó sẽ không va chạm với cái gì nữa mà ở trong phần script mình đã thêm 1 đoạn if để kiểm tra nếu như nó không va chạm thì quay lại.

Tổng Kết

Vậy là mình đã hướng dẫn bạn xong cách tạo 1 con nhân vật cơ bản nhất, ở phần tiếp theo sẽ là di chuyển giữa level, giết kẻ thù.

Adblock test (Why?)


Xem Them Chi Tiet

Nhung Mon Do Cong Nghe Duoc Yeu Thich

Do Cong Nghe Phu Kien
Xem Them Chi Tiet

Phu nu phai dep dan ong moi yeu! Sam ngay bo vay dam sieu dep

Thanh xuan nhu mot tach trá Khong mua do hot phi hoai thanh xuan

0 nhận xét:

Đăng nhận xét