2017-04-12 87 views
0

我正在使用Bullet和OpenGL,基本上我有一個身體,我希望它出現在屏幕上但不遭受碰撞。禁用每個碰撞一個身體

它只需要視覺。

我'創建對象是這樣的:

btBoxShape* colShape = createBoxShape(btVector3(1, 1, 1)); 
m_collisionShapes.push_back(colShape); 
btTransform startTransform; 
startTransform.setIdentity(); 
btScalar mass(0.5f); 
bool isDynamic = (mass != 0.f); 
btVector3 localInertia(0, 0, 0); 
    if (isDynamic) 
     colShape->calculateLocalInertia(mass, localInertia); 
startTransform.setOrigin(btVector3(5.0, 0.5, 0.0)); 
createRigidBody(mass, startTransform, colShape); 

它沒有碰撞或與任何其他子彈體互動。

是否有任何標誌或類似的東西,以獲得此?

回答

1

只需繪製任何你想繪製的東西,而不必將它傳遞給物理引擎計算。 OpenGL完全不關心碰撞計算,你可以用OpenGL繪製任何你想要的東西。

+0

事實是,在我編寫的代碼中,我只是以圖形方式繪製Bullet Bodies,以便我想知道是否可以禁用身體碰撞而不是更改代碼。 – aserrin55

+0

@ aserrin55這樣可以幫助你知道你正在檢查哪個標誌,或者你在詢問什麼來決定畫什麼和不畫什麼。 – Vallentin

+0

@Vallentin我添加了一個讓每個Bullet Body都可視化的類。現在,我需要一個標誌或配置參數來禁用混凝土體的碰撞。再次感謝 – aserrin55

0

作剛體不與任何衝突的最簡單的方法是設置它的碰撞組和掩碼爲0

當添加剛體世界

mWorld->addRigidBody(object, 0, 0); 

但請注意,如果是它仍然會受到重力的影響,並且會下降。但是,如果您需要它,當然可以使用這種配置。請記住,它會忽略所有的碰撞,但仍然可以將力量應用於這樣的機構。