当前位置: 首页>>代码示例>>C++>>正文


C++ PhysicsBody::getBody方法代码示例

本文整理汇总了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;
        }
      }
    }
  }
}
开发者ID:klt592,项目名称:GTFinal,代码行数:33,代码来源:Physics.cpp

示例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);
  }
}
开发者ID:klt592,项目名称:GTFinal,代码行数:10,代码来源:Physics.cpp

示例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;
}
开发者ID:Jester565,项目名称:Tropadom2,代码行数:23,代码来源:Player.cpp


注:本文中的PhysicsBody::getBody方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。