Trang

24/12/12

* Ý tưởng về lý thuyết lớp nhân vật (CharacterClass)

1) Các yêu cầu cơ bản về các biến lớp nhân vật :
- Thông thường khi xây dựng game thì lớp quan trọng nhất trong game chính là lớp nhân vật. Đây là lớp dùng để tạo ra nhân vật trong game, các nhân vật này có thể có những dạng khác nhau, có thể dùng lớp nhân vật để tạo nên các nhân vật có các họat ảnh (animation) khác nhau, hay có thể dùng để điều khiển các con thú (cũng là một dạng nhân vật nhưng có ít họat ảnh hơn), hay là những con trùm (boss) to lớn và hung dữ.
- Do đó theo tôi thì một nhân vật cơ bản trong game dùng cho Irrlicht có thể được cấu tạo như sau :
+ Nhân vật phải có 01 IAnimatedMeshSceneNode* dùng để lưu giữ các cấu tạo cơ bản của nhân vật (vị trí, độ thu phóng, lọai họat ảnh...)
+ Nhân vật có 01 camera quan sát. Nếu cần thì khi chạy game có thể chuyển sang chế độ quan sát của nhân vật này. ( hay chúng ta dùng camera như biến tòan cục duy nhất 01 camera).Ta dùng ở đây là RPG Camera ( tất cả các biến của RPG Camera)
+ Do nhân vật phải tương tác với môi trường nên chúng ta phải dùng một biến tòan cục dạng IMetaTriangleSelector* để nhằm kiểm tra va chạm của nhân vật với mội trường xung quanh.
+ Nhân vật có bao nhiêu họat cảnh và được xếp theo nhóm như thế nào (ví dụ : chạy, đi, nhảy, rơi, tấn công, phòng thủ, chết, bị thương...). Ta sẽ quản lý các biến này bằng mãng array của Irrlicht.
+ Các biến phụ khác như : sức khỏe (health), ma thuật (magic), đẳng cấp (level) để kiểm soát nhân vật.
+ Các biến điều khiển nhân vật như : đi,chạy, nhảy, tấn công, phòng thủ, chết, ...đây là các biến gắng trực tiếp với nhân vật. Các biến này phải được gán cho một lọat các phím ảo cố định tạo thành 02 mãng quản lý chuyển động của nhân vật.Ví dụ khi nhân vật đang nhảy thì ta hiện động tác nhảy. Không thể kết hợp vừa nhảy vừa tấn công, hay chết). Tuy nhiên với hệ thống new Aniamtion mới Irrlicht 1.4 hình như hỗ trợ được cách này. và như thế thì nếu game ta dùng 02 người chơi cùng lúc thì ta có thể gán 02 bộ phím khác nhau cho 2 nhân vật. Điều này thật tiện lợi.
+ Nhân vật hiện tại do máy điều khiển hay do người điều khiển.
+ Nhân vật phải tự phát hiện được va chạm với môi trường xung quanh tìm được các điểm va chạm với môi trường. Từ đó quyết định di chuyển theo hướng khác, đây là phần tự điều khiển của nhân vật do máy tính quản lý. Phần nâng cao của sự di chuyển này là cho nhân vật di chuyển theo bản đồ định trước (theo thuật tóan A*), bản đồ được nhập vào thông qua chương trình biên sọan Level (như IrrEdit).

Trên đây là một số ý niệm của mình về các biến để tạo lớp nhân vật. Mình đã dùng nó để tạo demo BattleMaze. Phần sau mình sẽ trình bài về các hàm cần có trong lớp CharacterClass.

* Mình thấy hình như là cái Class này nói thì hơi khó hiểu, thôi để mình Up lên từng cái : đó là tòan bộ Source của Demo BattleMaze, nếu các bạn thấy có gì khó hiểu xin liên hệ với mình.

* Các bạn hãy tạo project mới (Win32) chép các tệp tin Irrlicht.dll, IrrKlang.dll, ikpMP3.dll. Chép các tệp tin tải về từ địa chỉ bên dưới add các tệp tin .cpp,.h vào project của mình, sau đó biên dịch. chúc các bạn thành công.( Mình dùng VC++6.0)

Địa chỉ download :


CharacterClass.h
http://www.4shared.com/file/26234357/14502301/CharacterClass.html


CKeyBoard.h
http://www.4shared.com/file/26234359/f3e80e06/cKeyBoard.html

cMazeClass.cpp
http://www.4shared.com/file/26234376/51617115/CMazeClass.html

cMazeClass.h
http://www.4shared.com/file/26234364/a6742178/CMazeClass.html


Không có nhận xét nào:

Đăng nhận xét

Bài đăng phổ biến