本文整理汇总了C++中PhysicsBody::getBody方法的典型用法代码示例。如果您正苦于以下问题:C++ PhysicsBody::getBody方法的具体用法?C++ PhysicsBody::getBody怎么用?C++ PhysicsBody::getBody使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PhysicsBody
的用法示例。
在下文中一共展示了PhysicsBody::getBody方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: step
void Physics::step(void) {
dynamicWorld->stepSimulation(1.f/60.f);
graphics->animate();
int numManifolds = dynamicWorld->getDispatcher()->getNumManifolds();
for (int i = 0; i < numManifolds; i++) {
btPersistentManifold* contactManifold = dynamicWorld->getDispatcher()->getManifoldByIndexInternal(i);
btCollisionObject* obA = static_cast<btCollisionObject*>(contactManifold->getBody0());
btCollisionObject* obB = static_cast<btCollisionObject*>(contactManifold->getBody1());
btBroadphaseProxy* obA_proxy = obA->getBroadphaseHandle();
btBroadphaseProxy* obB_proxy = obB->getBroadphaseHandle();
if (obA_proxy->m_collisionFilterGroup & obB_proxy->m_collisionFilterMask) {
if (obA_proxy->m_collisionFilterGroup == COL_PENGUIN && obB_proxy->m_collisionFilterGroup == COL_KILLBOX) {
PhysicsBody* object = reinterpret_cast<PhysicsBody*>(obA->getUserPointer());
resetObject(object);
} else if (obA_proxy->m_collisionFilterGroup == COL_PENGUIN && obB_proxy->m_collisionFilterGroup == COL_GOAL) {
nextStage();
graphics->playSound(2);
} else if (obA_proxy->m_collisionFilterGroup == COL_PENGUIN && obB_proxy->m_collisionFilterGroup == COL_CHECKPOINT) {
btVector3 checkpoint2 = obB->getWorldTransform().getOrigin();
btBoxShape* shape = reinterpret_cast<btBoxShape*>(obB->getCollisionShape());
checkpoint2 += btVector3(0, shape->getHalfExtentsWithoutMargin().y(), 0);
checkpoint2 += btVector3(0, 25, 0);
PhysicsBody* object = reinterpret_cast<PhysicsBody*>(obA->getUserPointer());
btRigidBody* body = object->getBody();
btVector3 translate = body->getCenterOfMassPosition();
if (checkpoint2 != checkpoint && translate.y() >= checkpoint2.y()) {
graphics->playSound(1);
checkpoint = checkpoint2;
}
}
}
}
}
示例2: removeStage
void Physics::removeStage(void) {
int x = 1;
while (gameBodies.size() > x) {
PhysicsBody* obj = gameBodies.at(x);
dynamicWorld->removeRigidBody(obj->getBody());
gameBodies.remove(obj);
delete obj;
graphics->removeObject(x);
}
}
示例3: PhysicsBody
PhysicsBody * Player::CreatePlayerBody(WorldManager * wm, float x, float y)
{
PhysicsBody* playerBody = new PhysicsBody(wm, BODY_DYNAM, x, y, 0);
b2FixtureDef playerFixDef;
b2PolygonShape boxShape;
boxShape.SetAsBox(PLAYER_W / 2.0, PLAYER_H / 2.0);
playerFixDef.shape = &boxShape;
playerFixDef.density = 1020;
playerFixDef.restitution = 0;
playerFixDef.filter.groupIndex = -1;
playerBody->setFixedRotation(true);
playerBody->getBody()->CreateFixture(&playerFixDef);
playerBody->setW(PLAYER_W);
playerBody->setH(PLAYER_H);
playerBody->setBmp();
playerFixDef.density = 1;
playerFixDef.friction = 0;
boxShape.SetAsBox(PLAYER_W / 20.0, PLAYER_H / 2.0, b2Vec2(-PLAYER_W / 2, 0), 0);
playerBody->getBody()->CreateFixture(&playerFixDef);
boxShape.SetAsBox(PLAYER_W / 20.0, PLAYER_H / 2.0, b2Vec2(PLAYER_W / 2, 0), 0);
playerBody->getBody()->CreateFixture(&playerFixDef);
return playerBody;
}