Game C++ Phần 2 – B4: Kỹ thuật load nhân vật game
Hello, chào mừng các bạn đến với chủ đề học lập trình game c++ phần 2.
Bài số 3 này chúng ta sẽ cùng tìm hiểu một kỹ thuật tiếp theo.
Đó là: Kỹ thuật load nhân vật game player
Ok. Về cơ bản việc load nhân vật game chúng ta có 3 phần cơ bản, mình chia thành các part1, part2, part3
1. Part 1 chia sẻ với các bạn cách xây dựng lớp main object.
Khác với chủ đề chia sẻ trong phần mềm, khi nhân vật của tôi chỉ là 1 chiếc máy bay di chuyển trên bầu trời.
Trong project này chúng ta sẽ sử dụng nhân vật là một chiến binh di chuyển trên mặt đất,
do đó hiệu ứng ứng animation được áp dụng để tạo sự sinh động và thực tế cho việc nhân vật di chuyển.
Nguyên lý cơ bản:
Sử dụng frame_clip để lưu trữ lần lượt kích thước và vị trí của các frame trong 1 sprite hình ảnh nhân vật game
Hình minh họa ở trên sẽ mô tả một sprite nhân vật game với 8 frame,
và khi thực hiện show hình ảnh, thì liên tục 8 frame này được thay đổi luân phiên qua nhau từ 0 đến 7
Nó tạo lên hiệu ứng động về hình ảnh giống như nguyên lý 24 hình /s
Ok. các bạn hãy cùng thực hành với video chia sẻ để hiểu rõ hơn.
2. Part 2 bắt đầu thực hiện xử lý va chạm giữa nhân vật và bản đồ tile.
Nhân vật game khi xuất hiện trên bản đồ, thì nó sẽ có vị trí tương ứng là x_pos và y_pos.
Từ vị trí x_pos và y_pos của nhân vật sẽ tính toán được nhân vật game đang đứng ở vị trí ô thứ bao nhiêu của tile map.
Sau đó khi biết được vị trí ô của nhân vật game,
chúng ta sẽ thực hiện việc kiểm tra xem tại ô đó, tile map có trạng thái bằng bao nhiêu.
+ Nếu ô tile map = 0, nhân vật có thể di chuyển bình thường.
+ Nếu o tile map đó, mà tồn tại map, thì nhân vật không thể vượt qua được,
mà chỉ đứng yên tại ô tile map trước đó.
=> tương tự như vậy, chúng ta sẽ phải xử lý cả hai 4 hướng, trên, dưới, trái phải,
để xử lý được nhân vật game đứng được trên tile map, bị chặn khi va chạm với tile map
Hình vẽ trên mô tả sẽ giúp các bạn dễ hiểu hơn.
– Khi đứng yên, player sẽ nằm ở vị trí như hình trên, nó sẽ được kiểm tra va chạm với ô D và thấy rằng,
có xả ra va chạm, và xử lý sẽ ko cho phép player tiếp tục rơi tự do, mà bị chặn lại
tại vị trí va chạm với ô d => player đứng được trên mặt đất.
– Khi chúng ta ấn left, player được di chuyển lên 1 lượng là x_val,
x_pos sẽ được cộng thêm một lượng x_val và player sẽ được di chuyển sang vị trí ô tile map là a.
Chương trình sẽ kiểm tra thấy ô tile map a đã có một map là hộp gỗ, nên không cho phép player di chuyển nữa,
x_pos được đưa về giá trị trước đó, x_val sẽ được gán = 0
– Tương tự như vậy, khi player nhảy lên hoặc lùi lại, nó sẽ luôn kiểm tra các ô tile map c, d
Ok, hãy cùng xem video để thực hành dễ dàng hơn
2. Part 3 Xử lý khi nhân vật di chuyển, bản đồ cũng được di chuyển theo.
Như vậy part 3 sẽ giúp chúng ta kiểm tra được bản đồ tile map
có hiển thị chuẩn so với sơ đồ chúng ta vẽ ra trong file map.dat hay không.
cơ chế của việc cuốn chiếu bản đồ đó chính là,
việc tính toán lại hai giá trị map_.startx và map_.start_y, dựa vào vị trí x_pos và y_pos của player.