Ogre Opcode實現碰撞檢測

2021-05-28 05:09:20 字數 1650 閱讀 4991

開發環境

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...