開發環境
ubuntu11.04,gcc4.5,netbean6.91,ogre1.7.3,ogreopcode
ogreopcode和例子的netbean工程,動態鏈結庫已上傳 ,
由於都做了些小改動,人也有點懶,就不提供原始鏈結了。
有時候僅是想用碰撞檢測而不是物理引擎,比如在網路遊戲中,物理引擎將帶來很多困難和效率損失。
本來想自己寫乙個碰撞檢測庫,無奈水平不夠,寫了3天都未成雛形。
只好去找個巨人的肩膀來站站,於是找到了opcode和其ogre封裝ogreopcode。
但opcode資料少得可憐,ogreopcode多年未更新,**居然還有語法錯誤,更別說編譯其工程了。
花了半天來修修補補,終於編譯ogreopcode成功。
接下來最大的問題是學習ogreopcode的使用,自帶的例子錯誤一大堆。
對於小白來說,沒有乙個可以執行的例子簡直是災難,更甚於沒有文件。
放狗搜放毒搜,終於找到乙份靠譜的,執行成功。
先說下**流程:
(1)建立場景物體
(2)collisionmanager* mcollisionmgr = new collisionmanager(mscenemgr);
建立碰撞管理器,在碰撞檢測開始前需要用來做一些初始化工作
(3)mcollisioncontext = mcollisionmgr->createcontext("testcontext");
建立collisioncontext,這是在碰撞檢測時使用的
(4)mcollisionmgr->addcollclass("charactor");
mcollisionmgr->addcolltype("charactor", "charactor", colltype_exact);
新增碰撞型別,可當作給碰撞物體分組。
(5)entitycollisionshape *shape = collisionmanager::getsingletonptr()->createentitycollisionshape(entname);
shape->load(mscenemgr->getentity(entname));
collisionobject* pcollisionobject = mcollisioncontext->createobject(entname);
pcollisionobject->setcollclass(strcollclass.data());
pcollisionobject->setshape(shape);
mcollisioncontext->addobject(pcollisionobject);
給場景物體新增碰撞外殼並新增到碰撞計算中
(6)在每一幀中呼叫
pcollcontext->visualize(true, true, true, true, true, true);
用於顯示線框顯示的碰撞外殼,類似於bullet中的debug draw。
pcollcontext->collide(timedelta);
執行碰撞檢測。
(7)if (pcollcontext->getattachedobject("robot")->hascollisions())
在每一幀中查詢robot有沒有發生碰撞,如果發生了執行相應的邏輯。
Ogre Opcode實現碰撞檢測
開發環境 ubuntu 11.04,gcc 4.5,netbean 6.91,ogre 1.7.3,ogreopcode ogreopcode和例子的netbean工程,動態鏈結庫已上傳 由於都做了些小改動,人也有點懶,就不提供原始鏈結了。使用者名稱與密碼都是www.linuxidc.com 內附 ...
OgreOpcode輕鬆實現碰撞檢測
ogreopcode 是一套輕量級的碰撞檢測庫,提供了包括 raycheck,sweptsphere 等基本的碰撞檢測演算法.但其只提供碰撞檢測部分,其碰撞反映部分並未提供.要是早知道有這麼好用的 的話,以前寫碰撞處理過程的時候也不會去做那麼多愚蠢的事情了.下面就舉乙個最簡單的,射線碰撞的例子 首先...
php怎麼實現校檢
php實現校檢的方法 1 宣告 session start 函式 2 建立驗證碼實現的 3 在驗證碼實現之前宣告乙個空變數,用來存放驗證碼 4 用post方式來接收驗證碼即可。php怎麼實現校檢?php實現驗證碼校驗功能 驗證碼的校驗是利用php中的 session功能來實現。在最頂端宣告函式 se...