+Lấy tọa độ một SceneNode(SN)
Giả sử trên Scene đã có một SN tên node , để lấy tọa độ của SN này, viết code như sau :
Mã:
core::vector3df v = node->getPosition(); //Khởi tạo biến v để nhận tọa độ của node
Bây giờ, v trở thành 1 object chứa các thông tin của node, v sẽ có các thuộc tính : v.X , v.Y, v.Z -> là giá trị tọa độ của node trên trục tọa độ Oxyz
+Đặt tọa độ cho một SN
Cũng như trên, sau khi khai báo code, bạn thiết lập giá trị cho v.X hoặc v.Y rồi dùng hàm node->setPosition(v); để đặt tọa độ, ví dụ :
Mã:
v.X = 50;
v.Y = 10;
node->setPosition(v);
Kết quả : đưa node đến điểm có tọa độ (50,10)
+Hiển thị một MessageBox
Để hiển thị một MsgBox, bạn viết code :
Mã:
device->getGUIEnvironment()->addMessageBox(L"Tiêu đề",L"Nội dung");
Với device là tên của IrrlichtDevice
+Thay đổi tiêu đề cửa sổ
Thay đổi tiêu đề cửa sổ lúc đang thực thi, dùng code sau :
Mã:
device->setWindowCaption(L"Tiêu đề cửa sổ");
+Tắt ứng dụng
Để tắt ứng dụng Irrlicht khi đang chạy, bạn dùng :
Mã:
device->closeDevice();
+Khởi tạo ứng dụng trong chế độ FullScreen
Mã:
device = createDevice( video::EDT_DIRECT3D9, dimension2d<s32>(1024, 768), 16, <fs>, false, false, 0);
Với <fs> có giá trị true để FullScreen, false để dùng WindowMode
+Dùng tiếng Việt trong Irrlicht
Khi dùng Irrlicht với VC++6, bạn không thể sử dụng tiếng Việt Unicode cho Irrlicht được, để khắc phục, ta có thể chọn một loại font khác với một bảng mã khác, ở đây mình sẽ dùng font VK Sans Serif, bảng mã TCVN3 vì font này rất sắc nét.
Đầu tiên, vào thư mục Tools trong bộ thư viện Irrlicht, vào thư mục IrrFontTool -> oldFontTool, chạy file IrrFontTool.exe, chọn font VK Sans Serif (hoặc font nào bạn muốn), chỉnh các thông số như size, bold, italic... cho phù hợp với mục đích sử dụng của bạn, rồi nhấn nút : Create bitmap font and copy to clipboard, rồi vào Paint dán cái hình đó vào, lưu lại với tên gì đó, vd: font.bmp
Rồi vào VC++6, code như sau :
Mã:
IGUISkin* skin = guienv->getSkin();
IGUIFont* font = guienv->getFont("Data/font.bmp"); //Font VK Sans Serif - Tieng Viet TCVN3
if (font)
skin->setFont(font);
Đoạn code này phải đặt sau phần khai báo IGUIEnvironment* guienv = device->getGUIEnvironment(); , nếu không, khi chạy sẽ bị lỗi.
Từ lúc này, bạn có thể dùng tiếng Việt thoải mái (lưu ý là bảng mã phải phù hợp với loại font bạn chọn)
+Đặt một đoạn text lên màn hình
Code :
Mã:
device->getGUIEnvironment()->addStaticText(L"Nội dung",rect<s32>(10,50,300,200),[B],true,0,-1,false);
Trong đó, rect<s32>(10,50,300,200) sẽ tạo ra một ô text size 300x200, tại vị trí (10,50), [B] có giá trị true nếu muốn hiển thị khung của ô text, false nếu không muốn hiển thị.
+Âm thanh với IrrKlang
Âm thanh là phần không thể thiếu trong Game, khi dùng Irrlicht, bạn có thể play 1 file âm thanh bằng cách sử dụng thư viện IrrKlang, cách khai báo như sau :
Mã:
#include <irrKlang.h>
Mã:
using namespace audio; //add cai nay vao de IrrKlang co the hoat dong
Mã:
#pragma comment(lib, "irrKlang.lib")
Rồi trong int_main() bạn khai báo Engine irrKlang
Mã:
irr::audio::ISoundEngine* KLengine = irr::audio::createIrrKlangDevice();
Bây giờ, để play 1 file âm thanh nào, bạn viết :
Mã:
KLengine->play2D("Data/cobemuadong.mp3",true);
Thuộc tính True là để KLengine loop (lặp lại - replay) file nhạc mỗi khi chơi xong.
Kết thúc chương trình, bạn nên Delete KLengine :
+Xoay SN :
Mã:
node->setRotation(vector3df(0,0,0));
+Điều chỉnh kích thước SN :
Mã:
node->setScale(vector3df(0,0,0));
+Load scene từ file Irr :
Mã:
smgr->loadScene("Data/thunglung.irr");
smgr là IScreenManager
+Nhận biết sự kiện nhấn phím
Đầu tiên, bạn phải viết class làm nhiệm vụ Nhận và xử lý các sự kiện, ở ví dụ này, class đó đc đặt tên là MyEventReceiver
Mã:
class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
if (node != 0 && event.EventType == irr::EET_KEY_INPUT_EVENT)
{
switch(event.KeyInput.Key)
{
case KEY_UP:
{
//Code của sự kiện KEY_UP
}
return true;
}
return false;
}
};
Như đã thấy ở trên, khi có sự kiện KEY_UP (tức là nhấn phím mũi tên Up), MyEventReceiver sẽ thự hiện code ở phần sự kiện KEY_UP
Các thông số tên của phím được nhấn, bạn có thể tham khảo trong file Keycodes.h của Irrlicht.
Sau khi viết xong class MyEventReceiver, bạn vào main() viết code khai báo IEventReceiver :
Mã:
MyEventReceiver receiver; //Khoi tao device su kien
sau đó, add receiver vào IrrlichtDevice :
Mã:
device = createDevice( video::EDT_DIRECT3D9, dimension2d<s32>(1024, 768), 16,false, false, false, &receiver); //Khoi tao man hinh va add EventReceiver vao
Diễn đàn Irrlicht tại Việt Nam : http://forum.gamedev.vn/index.php?showforum=72
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...