Đây có lẽ là class thân thuộc nhất với tất cả mọi người. Đa phần những người mới học thường thực hiện mọi thao tác bên trong class này thay vì chia ra 😀 Vậy nên mình sẽ đi qua xem class này có gì đặc biệt nhé!
Nhiệm vụ Pawn/Character
Nhiệm vụ của Pawn/Character thì quá hiển nhiên, nó sẽ là nhân vật chính mà người chơi thường điều khiển để thực hiện các hành động trong game. Vậy sự khác biệt của Character và Pawn là gì ? Có thể tóm tắt như sau
- Character : là nhân vật, là con người đúng như nghĩa của nó. Class Character cung cấp cho ta sẵn Character Movement Component, 1 yếu tố giúp mô phỏng mọi thứ liên quan tới cử động của con người
- Pawn : là class mẹ của Character. Pawn chi cho phép người dùng sử dụng những di chuyển căn bản như trái phải lên xuống mà không có các hành động của con người.
Nói ra thì mọi người nghĩ rằng, ủa vậy sao không dùng Character cho rồi tại Pawn chả có gì ?! Thực ra, với bạn nào thiết kế nhân vật của game không phải con người, như là quả bóng, là chiếc xe,.. thì bạn bắt buộc phải dùng Pawn và thiết kế logic di chuyển của bạn cho nó.
Cách tạo một Character/Pawn
Cách tạo quá hiển nhiên rồi ha
Sử dụng Character/Pawn
Để sử dụng Character/Pawn, ta phải gắn class vừa tạo trong GameMode settings
Một số chức năng và đặc tính của Character/Pawn
Cách thông thường để tró tới nhân vật trong game đó là dùng
Lưu ý: Nếu nhân vật của bạn thừa hưởng từ class Pawn, thì Get Player Character sẽ không có tác dụng. Nhưng nếu nhân vật của bạn được thừa hưởng từ class Character thì Get Player Pawn vẫn sẽ trả lại đúng giá trị nhé!
Nếu bạn muốn trỏ tới nhân vật chính đang điều kiển ở trong class PlayerController, có thể trỏ bằng cách
Tips: Ưu điểm của cách ở ảnh 5b đó là, nếu ở môi trường trên 2 người chơi cùng một session, sẽ luôn có thể trỏ tới đúng nhân vật người dùng đang điều khiển
Ngoài ra 2 class này có rất nhiều sự kiện hữu ích mà ta có thể dùng. Cùng điểm qua vài cái nhé:
Unreal cung cấp sẵn cho ta hàm ngồi mà khi đó camera sẽ tự thay đổi theo vị trí của mắt. Khi gọi hàm Crouch (ngồi) và UnCrouch (dừng ngồi), 2 sự kiện tương ứng sẽ được gọi, và đi kèm theo 2 giá trị:
- Half Height Adjust : độ cao nửa người đã bị thay đổi (ví dụ nhân vật cao 1.8m, khi ngồi, nhân vật chỉ còn cao 0.8m, thì giá trị sẽ là 0.9m – 0.4 m = 0.5m)
- Scaled Half Height Adjust : cái này là giá trị trên nhân với thang scale của Character
Ngoài ra còn có
Tương tự như hàm ngồi, ta cũng có hàm Jump (nhảy) và Stop Jumping (dừng nhảy), đồng thời đi kèm 2 sự kiện tương ứng là On Jumped và On Landed.
- On Jumped: sự kiện được gọi ngay khi nhân vật nhảy lên
- On Landed: sự kiện được gọi khi nhân vật đã tiếp đất, trả lại thông tin mặt phẳng mà nhân vật đã tiếp đất trên (Hit)
Khác với Jump một tí, hàm Launch Character cho phép bạn phóng nhân vật theo một hướng tùy ý (nhận vector Launch Velocity cho hướng phóng và lực phóng). Sự kiện On Launched cũng sẽ được gọi ngay sau đó kèm với các giá trị bạn đã gán ở hàm trước.
Cuối cùng, có thể kể đến một số hàm và sự kiện chung của cả Character/Pawn như là:
- Event Destroyed: sự kiện này được gọi khi mọi qúa trình hủy diệt nhân vật đã xong, và là cơ hội cho bạn thực hiện thao tác bạn muốn trước khi nó mất.
- Event End Play: sự kiện này được gọi sớm hơn Event Destroyed, nó được gọi khi nhân vật đang bị hủy diệt.
- Event Posssesed/Unpossessed: sự kiện được gọi khi nhân vật được PlayerController sở hữu.
- Event Hit: sự kiện được gọi khi có sự va chạm giữa nhân vật và bất kì cái gì đó
- Event AnyDamage: sự kiện được gọi khi nhân vật bị dính bất cứ loại damage nào
- Event PointDamage: sự kiện được gọi khi nhân vật bị dính damage dạng điểm (ví dụ là đạn, hay tia laser)
- Event RadialDamage: sự kiện được gọi khi nhân vật bị dính damage dạng vòng (ví dụ như lựu đạn, vụ nổ bom,..)
Lưu ý: một số sự kiện như là Possessed, Unposseessed hay sự kiện có biểu tượng thùng máy ở góc phải như là AnyDamage, PointDamage, RadialDamage ám chỉ rằng chúng chỉ được gọi ở nơi có quyền tối cao nhất.
Ví dụ: máy chủ host, hay nếu ở singleplayer/offline game, thì là máy của người chơi.
Kết luận
Character/Pawn cho ta rất nhiều thứ để có thể sử dụng, tiếc là mình không thể viết hết trong bài này được. Để có thể hiểu rõ hơn về chúng, tốt nhất các bạn cứ gọi hết hàm ra phải thử vọc kết quả, như vậy sẽ dễ nhớ hơn 😀 Hẹn gặp các bạn ở post sau
Comments