• Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
AnonyViet
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
AnonyViet
No Result
View All Result

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật

DeathGM by DeathGM
10/11/2021
in Godot
Reading Time: 7 mins read
A A
6

Mục lục bài viết

  1. CollisionShape
  2. Tổng Kết

Ở phần trước mình đã hướng dẫn các bạn thêm animation cho nhân vật và bài đó nó khá là dài.

Trong phần này mình sẽ hướng dẫn bạn cách thiết kế nhân vật, chúng ta sẽ thêm collision rồi sau đó code cho nó di chuyển rồi jump các kiểu nha.

Các bài viết liên quan

Có nên dùng Unity để lập trình game không? 63

Có nên dùng Unity để lập trình game không?

07/04/2022
godot lap trinh game

Có nên học Godot Engine để lập trình Game không?

15/03/2022 - Updated on 17/03/2022
hoc lap trinh game de khong

Học lập trình Game dễ không? Tiềm năng của ngành lập trình game?

09/03/2022
Có nên dùng Game Maker Studio để làm Game trong năm không? 64

Có nên dùng Game Maker Studio để làm Game trong năm không?

03/03/2022

CollisionShape

Đầu tiên, các bạn phải thêm cho mình CollisionShape2D[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật

Các bạn nhấn vào CollisionShape2D bên bảng Inspector ở dòng Shape chọn [empty] -> chọn cái phù hợp vói nhân vật, ở trong trường hợp này là cái đầu tiên.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 49

Sau khi chọn xong các bạn căn chỉnh lại cho đều.[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 50

Rồi các bạn nhấn Ctrl + S để save lại. Các bạn tạo cho mình thêm 1 thư mục mới tên là Scenes để lưu trữ các scene bằng cách chuột phải chọn new folder.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 51

Như trên.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 52

 

Sau đó tiến hành thêm Script vào cho nhấn vật.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 53

Các bạn chọn đường dẫn lưu ở thư mục Scenes sau đó nhấn Create.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 54

Và đây là giao diện Script của Godot.

Mình sẽ khai báo 4 biến là:

var tocdo = 200
var trongluc = 7000
var chuyendong = Vector2()
var huong_dichuyen

Và 4 biến có công dụng như tên của nó.

Tiếp đó mình sẽ code cho nó thêm như sau:

func _physics_process(delta):
    chuyendong.y = trongluc * delta
    huong_dichuyen = Input.get_axis("ui_left","ui_right")
    
    if huong_dichuyen != 0:
        chuyendong.x = lerp(chuyendong.x,huong_dichuyen * tocdo,0.5)
    else:
        chuyendong.x = lerp(chuyendong.x,0,0.1)
    
    chuyendong.normalized()
    move_and_slide(chuyendong,Vector2.UP)

Ở đây mình sẽ giải thích đoạn code này cho các bạn hiểu.

Mình sử dụng hàm _physical_process vì đây là hàm chuyên sử dụng các vấn đề liên quan tới vật lý.

Biến chuyendong mình đã khai báo nó là Vector2() mà Vector2() là 1 thư viện và nó hoạt động theo trục ox và oy.

Dòng chuyendong.y += trongluc * delta thì:

  • chuyendong.y tức là mình gọi trục y của biến chuyendong
  • mình sẽ + nó với biến trongluc là 500 mà trục y dương thì nó sẽ di chuyển xuống bên dưới.
  • còn * delta thì đây là biến đồng bộ hoá các khung hình để làm cho game của bạn luôn đồng bộ hoá các frame tránh hiện tượng các frame hiển thị nhanh hoặc chậm khi fps thấp hoặc bị gì đó.

Dòng huong_dichuyen = Input.get_axis(“ui_left”,”ui_right”) :

  • thì huong_dichuyen là biến mình dùng để xác định rằng mình đang nhấn phím nào và muốn con nhân vật mình di chuyển theo hướng đó
  • Input.get_axis(“ui_left”,”ui_right”) là mình sẽ gọiClass Input sau đó sử dụng hàm get_axis() để xác định rằng mình đang nhấn bên trái ( nếu nhấn bên trái nó trả về -1 ) hay phải ( nếu nhấn bên phải trả về 1) ( lưu ý: hàm get_axis() chỉ ở Godot 3.4 mới có nếu cũ hơn thì phải sài thủ công)

Dòng if huong_dichuyen != 0: :

  • Mình sẽ kiểm tra nếu như mình đang nhấn 1 phím nào đó tức là mình muốn nó di chuyển hướng mình nhấn thì nó sẽ thực hiện lênh di chuyển.
  • chuyendong.x thì chuyendong.x tức mình gọi trục x của nó ( vì game Platformer mà bạn chỉ di chuyển trái phải chứ không như Top Down cho nên sử dụng trục x thôi)
  • lerp(chuyendong.x,huong_dichuyen * tocdo,0.5) : lerp() là hàm trả về giá trị từ giá trị này cho đến tối đa giá trị kia ( lerp(from,to, weight)  weight là 1 giá trị đâu đó tùừ0 cho tới 1 ). Vây tức là mình sẽ gọi biến đầu tiên của hàm lerp là chuyendong.x vì mình muốn nó di chuyển từ tốc độ hiện tại cho tới tốc độ tối đa nên mình sẽ để biến 2 là speed, còn biến thứ 3 thì tuỳ bạn đặt như nào cũng được trong phạm vi 0 tới 1.
  • còn huong_dichuyen * tocdo là để mình biết mình di chuyển hướng nào)

Dòng else: :

  • Thì mình kiểm tra nếu như không di chuyển nữa sẽ đứng im
  • Ở đây mình xài lerp là vì mình muốn tạo ra một ít ma sát trước khi đứng yên. Nếu như bạn không thấy điều gì khác biệt thì có thể đổi chuyendong.x = lerp(chuyendong.x,0,0.1) thành chuyendong.x = 0 để cảm nhận sự khác biệt nhé.

Hai dòng cuối:

  • chuyendong.normalized() là mình sẽ bình thường hoá nó lại.
  • move_and_slide(chuyendong,Vector2.UP) đây là hàm chỉ có trong các node Body và nó cho phép bạn di chuyển. Biến chuyển động bạn luôn đặt ở vị trí số 1, còn cái Vector2.UP được gọi là UP Direction và nó dùng để xác định vị trí của wall,floor, ceiling. Nếu bạn không để gì thì mọi thứ đều là wall ( sử dụng cho top down game) còn nếu bạn để Vector2.UP thì ở trên đầu bạn sẽ được xác định là trần và bên dưới là sàn ( thường thì platformer sẽ thêm cái này vào để bạn có thể làm nhân vật nhảy được).

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 55

Sau đó các bạn ra ngoài và thêm cho mình 1 biến Camera2D.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 56

Và ở Camera2D -> Inspector thì bật current lên thì camera mới hoạt động.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 57

Tiếp đó bạn sẽ tiến hành Instance scene player vào Map bằng các nhấn vào nút trên hình

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 58

Chọn Player.tscn sau đó nhấn Open.

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 59

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 60

Vậy là Player đã được Instance vào Scene Map

[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 61

Sau đó nhấn F6 và nhấn nút mũi tên trái, phải để di chuyển và khi chạy game của mình nó sẽ như này.[Tạo 2D Platformer Game với Godot] Phần 4: Thiết kế nhân vật 62

Nếu bạn thấy camera chưa ổn thì có thể chỉnh ở phần Zoom nhé.

Tổng Kết

Vậy là đã xong phần 4 rồi, trong phần này mình đã hướng dẫn các bạn các làm cho nhân vật di chuyển và ở bài sau chúng ta sẽ làm cho nó nhảy lên và áp dụng animation vô nhé

 

 

Tags: Godotlập trình gamethiết kế game
Previous Post

[Tạo 2D Platformer Game với Godot] Phần 3: Thiết kế nhân vật

Next Post

Cách ngăn không cho người khác chỉnh sửa file PowerPoint của bạn

DeathGM

DeathGM

Related Posts

godot lap trinh game
Godot

Có nên học Godot Engine để lập trình Game không?

15/03/2022 - Updated on 17/03/2022
[Tạo 2D Platformer Game với Godot] Phần 29: Lưu và load dữ liệu game 65
Godot

[Tạo 2D Platformer Game với Godot] Phần 29: Lưu và load dữ liệu game

09/12/2021
[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 66
Godot

[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện

08/12/2021
[Tạo 2D Platformer Game với Godot] Phần 27: Mở khoá level 67
Godot

[Tạo 2D Platformer Game với Godot] Phần 27: Mở khoá level

07/12/2021
[Tạo 2D Platformer Game với Godot] Phần 26: Thêm điểm số khi hết game 68
Godot

[Tạo 2D Platformer Game với Godot] Phần 26: Thêm điểm số khi hết game

30/11/2021
[Tạo 2D Platformer Game với Godot] Phần 25: Tạo Menu khi hết Level 69
Godot

[Tạo 2D Platformer Game với Godot] Phần 25: Tạo Menu khi hết Level

29/11/2021
Next Post
Cách ngăn không cho người khác chỉnh sửa file PowerPoint của bạn 70

Cách ngăn không cho người khác chỉnh sửa file PowerPoint của bạn

guest
guest

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

6 Comments
oldest
newest
Inline Feedbacks
View all comments
Đoán xem
Đoán xem
6 months ago

Bạn hướng dẫn thế này mà những người mới thì …
Hướng dẫn toàn bỏ bớt bước, mình toàn phải lên kênh nước ngoài xem xong quay lại đây.

Reply
DeathGM
Author
DeathGM
6 months ago
Reply to  Đoán xem

à, series này mình làm cho những bạn đã có kiến thức cơ bản nhé.
mà thực ra đây cũng bản remake của series cũ, ở series cũ thì đầy đủ chi tiết luôn nha

Reply
Him
Him
6 months ago

Bạn ơi, đoạn code thứ 2 dòng move_and_slide(chuyendong,Vector2.UP) này bị lỗi rồi nè

Reply
DeathGM
Author
DeathGM
6 months ago
Reply to  Him

lỗi gì nhr bạn

Reply
Him
Him
6 months ago
Reply to  DeathGM

Lỗi ‘The method “move_and_slide” isn’t declared in the current class’

Reply
DeathGM
Author
DeathGM
6 months ago
Reply to  Him

bạn coi có đúng cú pháp và dòng extends có phải là KinematicBody2D hay không

Reply
wpdiscuz   wpDiscuz

Liên hệ Quảng Cáo

Lien he AnonyViet

Đối tác —

Fshare

Các bài mới

CTF là gì? Muốn làm Hacker có nên chơi CTF? 71

CTF là gì? Muốn làm Hacker có nên chơi CTF?

21/05/2022
khoa hoc Hacker mu trang - Masters In Ethical Hacking

Tải khóa học Hacker mũ trắng – Masters In Ethical Hacking

20/05/2022
Cách ẩn nhà của bạn khỏi Google Maps 72

Cách ẩn nhà của bạn khỏi Google Maps

19/05/2022
tao tai khoan vcb bang sdt

Cách Tạo tài khoản Vietcombank theo Số điện thoại miễn phí

18/05/2022
Mip22 - tạo trang Phishing cho Linux và Android

Mip22 – Công cụ tạo trang Phishing cho Linux và Android

18/05/2022

Ads

Giới thiệu

AnonyViet

AnonyViet

Nơi chia sẻ những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến AnonyViet.

Hãy cùng AnonyViet xây dựng một cộng đồng CNTT lớn mạnh nhất!

Giới thiệu

AnonyViet là Website chia sẻ miễn phí tất cả các kiến thức về công nghệ thông tin. AnonyViet cung cấp mọi giải pháp về mạng máy tính, phần mềm, đồ họa và MMO.

Liên hệ

Email: anonyviet.com[@]gmail.com

1409 Hill Street #01-01A
Old Hill Street Police Station
Singapore 179369

 

Bản quyền: DMCA.com Protection Status

Bài viết mới

  • CTF là gì? Muốn làm Hacker có nên chơi CTF?
  • Cách giao dịch Ngoại Hối
  • Tải khóa học Hacker mũ trắng – Masters In Ethical Hacking
  • Cách ẩn nhà của bạn khỏi Google Maps
  • Cách Tạo tài khoản Vietcombank theo Số điện thoại miễn phí
  • Mip22 – Công cụ tạo trang Phishing cho Linux và Android

©2022 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ. Google iwin888 Bing tải game iwin Github tải iwin apk Github tải win456 Youtube ku fun wikipedia 88vin reddit twin 567LIVE MMLive 92lottery sun86 stackoverflow

No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC

©2022 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ. Google iwin888 Bing tải game iwin Github tải iwin apk Github tải win456 Youtube ku fun wikipedia 88vin reddit twin 567LIVE MMLive 92lottery sun86 stackoverflow

wpDiscuz
pixel