OgreOpcode輕鬆實現碰撞檢測

2021-05-21 22:09:53 字數 1331 閱讀 2065

ogreopcode 是一套輕量級的碰撞檢測庫,

提供了包括 raycheck, sweptsphere 等基本的碰撞檢測演算法.

但其只提供碰撞檢測部分, 其碰撞反映部分並未提供.

要是早知道有這麼好用的**的話, 以前寫碰撞處理過程的時候也不會去做那麼多愚蠢的事情了.

下面就舉乙個最簡單的,射線碰撞的例子

首先不廢話要包含相應的標頭檔案.並使用命名空間

#include "ogre/ogre.h"

#include "ogreopcode/ogreopcode.h"

using namespace ogre;

using namespace ogreopcode;

然後建立collisionmanager,並選擇場景管理器

static collisionmanager cm( pscenemanager );

collisionmanager::getsingletonptr()->setscenemanager( pscenemanager );

然後新增個碰撞類,並新增碰撞型別.

collisionmanager::getsingletonptr()->addcollclass( "blocker" );

collisionmanager::getsingletonptr()->addcolltype( "blocker", "blocker", colltype_exact);

再建立個碰撞裝置

m_pcollisioncontext = collisionmanager::getsingletonptr()->createcontext( "test" );

將需要碰撞的entity加入碰撞裝置中去.

void collisiontest::addstaticentity( entity* pentity )

將某個entity從碰撞裝置中移去

void collisiontest::removestaticentity( ogre::entity* pentity )

collisionobject* pobject = null;

trycatch( ... )

m_pcollisioncontext->destroyobject( pobject ); }

下面就是關鍵的射線測試了

其返回乙個點集

const vectorlist& collisiontest::raytest( const ray& ray, const real fdistance )

} return( m_listvector ); }

www.azure.com.cn

Ogre Opcode實現碰撞檢測

開發環境 ubuntu11.04,gcc4.5,netbean6.91,ogre1.7.3,ogreopcode ogreopcode和例子的netbean工程,動態鏈結庫已上傳 由於都做了些小改動,人也有點懶,就不提供原始鏈結了。有時候僅是想用碰撞檢測而不是物理引擎,比如在網路遊戲中,物理引擎將帶...

Ogre Opcode實現碰撞檢測

開發環境 ubuntu 11.04,gcc 4.5,netbean 6.91,ogre 1.7.3,ogreopcode ogreopcode和例子的netbean工程,動態鏈結庫已上傳 由於都做了些小改動,人也有點懶,就不提供原始鏈結了。使用者名稱與密碼都是www.linuxidc.com 內附 ...

Bootstrap table 輕鬆實現多層表頭

在做私活的時候,有乙個需求是要在頁面上實現多層表頭。一開始有點懵,不知道怎麼來實現,我回想起在jftt的時候,曾用過flex版的多層表頭,不過那離現在已經很久遠了,久遠到flex已經被淘汰出局了。於是在網上折騰了好一會兒,終於找到一款用起來簡單,效果又很不錯的元件 bootstrap table。b...