Okay, và chào mừng các bạn đến với series lập trình game với Godot Engine 3.2 và hôm nay mình sẽ hướng dẫn các bạn di chuyển lên, xuống, trái, phải cho nhân vật đầu tiên của mình.
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Tạo nhân vật
Đầu tiên chúng ta mở phần mềm lên nhé. Các bạn chú ý ở Phần scene
Nơi đây là nơi mà các bạn sẽ thực hiện Node của mình. Xem bài viết Node là gì?
Ở đây các bạn có thể chọn Other Node Hoặc 2D sence đều được. Bài viết này mình chọn Other Node
Khi tạo xong sẽ hiện ra bên dưới, và mình đổi tên lại là World:
Tiếp đến các bạn nhấn dấu + hoặc nhấn tổ hợp Ctrl + A để tạo Node mới dưới quyền của World
Và các bạn tìm KinematicBody2D cho mình:
Rồi ở KinematicBody2D chọn CollsionShape2D và Sprite nhé
Và ở đây sau khi tạo xong các bạn đã có 1 Nhân Vật Chuyển Động Cơ Bản có thể là bất cứ gì (nhân vật chính, kẻ thù,..)
KinematicBody2D: Nghĩa là Cơ thể động học (dùng để tạo object như 1 nhân vật )
Sprite: Dùng để tạo ảnh cho nhân vật của bạn
CollsionShape2D: Hình dạng va chạm (dùng để xác định nơi va chạm với vật khác)
Ở phần sprite các bạn nhấn vào và kéo icon.png hoặc bất kì ảnh nào mà bạn muốn để làm nhân vật, kéo vào texture.
Và ở đây nó đã xuất hiện:
Tiếp theo nhấn vào CollsionShape 2D và ở Inspector chọn Shape > New RectangleShape2D
Tại giao diện khuôn mặt của nhân vật, bạn kéo dấu chấm ở dòng màu xanh và dấu chấm đỏ ở dòng màu tím sao cho bằng cái sprite.
Code cho nhân vật di chuyển
Vậy là đã xong phần tạo nhân vật tiếp theo là Code.
Các bạn nhấn vào KinematicBody2D và chọn cho mình như ảnh để tạo script:
Script: Nơi mà bạn sẽ code và code đó sẽ áp dụng để chạy game và nhân vật của bạn
- Language: Ngôn ngữ sử dụng để lập trình
- Path: Đường dẫn để lưu
- Load: Tạo script
Và nhấn Load.
Sau khi nhấn Load, giao diện trang viết Code sẽ hiện lên, ban xóa hết nội dung từ dòng 4 đến dòng 17
Khai báo biến
Đánh cho mình một đoạn code khai báo biến như sau:
Ai lập trình rồi thì cũng biết khai báo biến rồi nhỉ ^^ cơ bản mà và ai chưa biết thì mình giải thích như sau nhé:
var: khai báo một biến nào đó để sử dụng nó. VD: var tocdodichuyen, var ketqua, var huongdichuyen
Vậy var chuyendong = Vector2() trong đó Vector2() là gì ?
Vector2(): là một biến được sử dụng cho toán học trong 2D và trong toán học thì các bạn biết đấy trục tọa độ x,y ,…
ở trong đây:
- x = chuyển động ngang
- y= chuyển động thẳng
- func _physics_process là quá trình vật lý nghĩa là quá trình chuyển động của kinematicbody2D
- func _ready là quá trình sẵn sàng: khi bạn khai báo một biến trong ready nó sẽ được nạp sẵn khi tải trò chơi
còn trong physics_process thì bạn cũng khai báo 1 biến như trên nhưng khi chuyển động nó mới được nạp
pass: có cũng được không có cũng được
Code chuyển động
Code cho mình đoạn sau. Đây là code chuyển động phải, trái
Trong đây mình sẽ giải thích đoạn câu lệnh if nhé. Ai học lập trình rồi thì câu lệnh if không còn gì khó khăn nhỉ
if input.is_action_pressed(“ui_right”): là: khi mà bạn nhấn phím mũi tên phải thì nó sẽ di chuyển sang phải Và Ngược lại Với elif là sang trái và else: là nó sẽ đứng yên sau khi di chuyển xong.
move_and_slide (di chuyển và lướt): giúp cho nhân vật của bạn di chuyển
Nhấn F5 hoặc F6 để chạy thử nhé.
F5: chạy scene mặc định
F6: chạy scene đang chỉnh sửa. VD: worldnumberone là scene mặc định và worldnumbervietnam là scene đang chỉnh sửa. Khi nhấn F5 cho dù là ở scene worldnumbervietnam thì nó sẽ chạy worldnumeberone nếu nhấn F6 nó sẽ chạy worldnumbervietnam mà không chạy worldnumeberone )
Nếu nó bị như này các bạn vô chỉnh lại nhé:
Nhấn theo như ảnh:
Chúng ta được như ảnh:
Khi bạn nhấn cái này nó sẽ giúp bạn cố định lại các thành phần bên trong nó.
Và nếu bạn nhấn cái ổ khóa thì nó sẽ khóa node lại trên màn hình không thể gì chuyển cũng như không thể nhấn
Sau đó chúng ta kéo nó ra giữa:
Được như này thì các bạn nhấn mũi tên phải và trái coi nó chuyển động nhé:
Nếu muốn chuyển động lên, xuống thì code như sau:
Và mình đã hướng dẫn các bạn lập trình 1 nhân vật cơ bản xong rồi nhé bài tiếp theo sẽ là về: Lực ma sát sau khi chạy xong, Trọng lực, Nhảy, Mặt đất.
Tạm biệt và hẹn gặp lại trong bài sau.
DeathGM!
Mình có một góp ý nho nhỏ là bạn có thể ra clip được không, bởi vì nhìn hình và đọc chữ rất khó so với được coi clip
ngôn ngữ gì đay
invalid set index ‘x’ (on base: Vector2′) with value of type ‘Vector2)
Mình bị lỗi như trên ko biết fix như nào admin giúp mình với