Đây là bài viết đầu tiên trong series những thành phần căn bản của UE4 Framework. Bài viết sẽ giải thích đơn giản và ngắn gọn hết mức có thể cho mọi người dễ hình dung 😀
Ok. Bắt đầu nào.
PlayerController là một cực kì quan trọng, phải nói là, class không thể thiếu trong tất cả ứng dụng được tạo ra từ UE. PlayerController (hay mình hay gọi là PC), có thể được ví von như là bộ não của ứng dụng. Bởi vì không có nó thì app hay game của bạn sẽ không thể vận hành được.
Để tạo một blueprint PC riêng, bạn có thể chuột phải vào Content Browser->Blueprint Class và chọn PlayerController
Vậy chức năng của PC là gì mà quan trọng như vậy ?
PC đóng vai trò là bộ não của người dùng. Trong đó, PC sẽ chịu trách nhiệm:
- Kiểm soát và xử lí input (chuột, bàn phím, touchpad, tay cầm,…)
- Kiểm soát và xử lí khung hình (UI, hình ảnh, viewport,..)
- Kiểm soát và xử lí cơ thể sở hữu
- Kiểm soát và xử lí thông tin của người dùng (tên, id, số nhà, địa chỉ,… :v)
- Đóng vai trò đại diện cho người dùng trong môi trường online
Kể sơ sơ thì các bạn cũng thấy nó quan trọng như thế nào rồi đúng không. Ở phần dưới đây, mình sẽ điểm qua một vài đặc tính cơ bản của PC
Chúng ta sẽ chú ý vào phần màu đỏ
Nhìn sơ qua, bạn có thể thấy một số thuộc tính quen thuộc như là Input Yaw Scale, Input Pitch Scale, Input Roll Scale. Các giá trị này, tương ứng sẽ được nhân với các giá trị input của player thiên về view (nhìn lên/xuống, quay trái/phải).
Ở hình 4 là một ví dụ đơn giản về xử lí input cho player nhìn lên/xuống. Giá trị được nối vào val không đơn thuần là đi thằng về phần xử lí để đưa camera lên ngay, mà trước đó. Nó sẽ nhân với Input Pitch Scale, trong trường hợp ví dụ trên là -2.5 (Ảnh 3). Như vậy kết quả là người dùng sẽ cảm thấy di chuột nhanh hơn bình thường. Tốt nhất thì mình nên cho nó về 1 hết để đảm bảo input là nguyên (raw).
Ngoài ra thì còn có:
- Player Camera Manager Class: class quản lí camera chính của player
- Auto Manage Active Camera : có tự động chiếm lấy view của camera từ chủ thể ngay khi sở hữu hay không
- Smooth Target View Rotation : giá trị để tính toán cho việc làm mượt quay camera
- Should Peform Full Tick When Paused : có tick khi dừng render camera không
Ngoài ra còn rất nhiều thứ khác liên quan tới PlayerController nhưng mình không thể nhét hết vào đây được =)) Nên mình sẽ đi qua phần cuối, là phần ứng dụng.
Để dùng PC của mình vừa tạo trên, bạn có thể gắn nó vào gamemode ở world settings hoặc có thể mở class gamemode lên và gắn.
Để có thể gọi đến PC và sử dụng, các bạn có thể làm một vài cách như sau:
Cách 1:
Đây là cách phổ biến và đơn giản nhất cho mọi người. Bởi vì đặc tính đặc trưng của PC là chỉ tồn tại ở một máy local, nên khi Get Player Controller được gọi, nó sẽ trỏ tới thằng duy nhất và đầu tiên ở máy.
Một lưu ý nho nhỏ rằng, nếu bạn thay giá trị 0 thành 1 hay 2 hay 3, thì nó sẽ trả về PC tương ứng theo index (trường hợp coop cùng 1 máy hoặc là gọi ở server).
- Lợi
Nhanh, đơn giản, không cần suy nghĩ nhiều =))
- Hại
Cách này chỉ có thể truy xuất dựa vào index, nếu như có 2-3 người tham gia, và bạn muốn kiếm người tên A, thì không thể biết được là A có index nào.
Cách 2:
Hàm này sẽ truy xuất PC đang điều kiển 1 pawn hay actor. Khi bạn play, ngay cả khi không có gắn pawn class mặc định, engine sẽ tự spawn ra 1 actor DefaultPawn, và cho PC sở hữu pawn này.
- Lợi
Truy xuất chính xác PC cần dùng dựa vào đối tượng trong level. Không sợ truy xuất sai vì mỗi đối tượng chỉ được sở hữu một PC
- Hại
Các bạn có thể thấy rằng giá trị trả về là Controller chứ không phải PlayerController. Controller thực ra là class mẹ của PlayerController. Nên nếu bạn muốn gọi những hàm hay biến thuộc PlayerController trở xuống. Bạn sẽ phải thực thi tác vụ Cast. Mình sẽ nói rõ hơn về cast ở bài viết sau nhé. Căn bản thì nó chỉ là như vậy
Ngoài ra cũng còn một số cách khác như là
hay thậm chí là Get Owner nếu owner của đối tượng là PC
Đó là những thứ căn bản về PlayerController mà mọi người nên biết 😀 Nếu có thắc mắc gì các bạn cứ để lại ở dưới bình luận nhé!
Comments