Kẻ thù hay các con quái vật là một thứ không thể thiếu trong các game Platformer hay Rpg. Vậy nên, trong phần này mình sẽ chỉ bạn cach thiết kế 1 con kẻ thù và cách thiết kế sẽ kéo dài 2,3 phần.
Art
Về phần Art bạn có thể tải qu link au: Desert Enemy Pixel Art Game Characters![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 58 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-12-38.png)
Sau khi tải về, ở Assets tạo thêm cho mình 1 folder mới là KeThu và copy toàn bộ art vào trong đó.
Tạo kẻ thù
Tạo scene mới
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 59 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 55](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-16-17.png)
Giống như Player bạn sẽ tạo 1 kinematicbody và ở đây mình đổi tên lại thành Cao ( con cáo ấy) và add thêm 2 nút con là AnimatedSprt và CollisionShape2D.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 60 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 56](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-17-29.png)
Bạn tạo Frames mới ở AnimatedSprite.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 61 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 57](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-19-42.png)
Ở đây mình add thêm 5 animation tương ứng vơi art.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 62 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 58](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-21-51.png)
Đây là sau khi thêm animation và nó hiển thị.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 63 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 59](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-22-25.png)
Bạn thêm CollisioShape cho nó
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 64 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 60](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-22-37.png)
Xong sau đó xoay CollisionShape2D sang ngang.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 65 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 61](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-23-03.png)
Nhấn vào thanh công cụ để có thể điều chỉnh nhé.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 66 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 62](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-22-54.png)
Rồi chỉnh lại AnimatedSprite cho phù hợp với CollisionShape2D.
Lưu ý: Bạn luôn lấy CollisionShape làm điểm căn chỉnh và không thay đổi vị trí hay gì đó của CollisionShape .
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 67 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 63](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-28-41.png)
Xong sau đó lưu scene lại nha, mình tạo thêm 1 folder mới ở Scenes là Kethu và lưu ở đó.
Thêm Script
TIếp theo là phần code.![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 68 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 64](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-27-44.png)
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 69 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 65](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-29-19.png)
Thêm nhẹ cái Script vào nè.
extends KinematicBody2D
var tocdo = 60
var trongluc = 10
var chuyendong = Vector2()
var huong_dichuyen = 1
onready var animation = $AnimatedSprite
func _physics_process(delta):
chuyendong.x = tocdo * huong_dichuyen
chuyendong.y += trongluc
chuyendong = move_and_slide(chuyendong,Vector2.UP)
if is_on_wall():
huong_dichuyen = huong_dichuyen * -1
Ở đây, nó cũng không khác gì Player khi mà cần 4 biến cơ bản để có thể chuyển động và 1 biến để có thể sử dụng animation.
Biến huong_dichuyen vì đây là A.I nên bạn không cần phải nhấn nút để nó di chuyển hay gì cả nên là mình sẽ set mặc định nó là 1.
Ở hàm _physics_process(delta):
- 3 dòng đầu thì không còn xa lại rồi
- Dòng if is_on_wall() là hàm cho phép bạn kiểm tra xem con kẻ thù khi đang di chuyển thì có và chạm với ai không.
- Bên dưới mình sẽ kiểm tra nếu như đang di chuyển qua phải mà gặp tường hay gì đó thì nó sẽ quay sang bên trái để di chuyển tiếp và ngược lại.
![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 70 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 66](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-41-04.png)
Sau đó bạn Instance con cáo vào Map để có thể thấy nó đã di chuyển.
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
Ở hàm _physics_process(): thì mình đã thêm vào 2 dòng lệnh để có thể chạy animation và xoay hình ảnh qua trái phải.![Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 71 Tạo 2D Platformer Game với Godot] Phần 7: Thiết kế kẻ thù 67](https://anonyviet.com/wp-content/uploads/2021/11/11-11-2021-11-58-43.png)
Đây là kết quả.
![]()
Đôi khi, có vài bạn cái Sprite nó sẽ bị ngược và bạn có thể chỉnh lại bằng cách chỉnh Flip_H của Sprite or AnimatedSprite.
Tổng Kết
Vậy trong phần này các bạn đã có thể làm ra một con kẻ thù cơ bản nhất, ở trong phần tiếp mình sẽ hướng dẫn bạn làm sao để nó có thể di chuyển ở trên bề mặt.
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