Cocos2dx创建碰撞刚体

joinToWorld函数创建碰撞刚体:

 
  
  1. void Monster::joinToWorld(Node* parent)
  2. {
  3.     Sprite* sp = Sprite::createWithSpriteFrameName(m_sModelPath.asString().c_str());
  4.  
  5.     /* 创建刚体 */
  6.     PhysicsBody* body = PhysicsBody::createBox(sp->getContentSize());
  7.     body->setCategoryBitmask(1);    // 0001
  8.     body->setCollisionBitmask(1);   // 0001
  9.     body->setContactTestBitmask(1); // 0001
  10.  
  11.     /* 精灵居中 */
  12.     sp->setPosition(Point(sp->getContentSize().width * 0.5f, sp->getContentSize().height * 0.5f));
  13.  
  14.     /* 精灵作为Monster的表现,添加到Monster身上 */
  15.     this->addChild(sp);
  16.  
  17.     /* 设置怪物Tag类型 */
  18.     this->setTag(ObjectTag_Monster);
  19.  
  20.     /* 精灵作为Monster的表现,Monster本身没有大小,所以要设置一下大小 */
  21.     this->setContentSize(sp->getContentSize());
  22.  
  23.     /* 刚体添加到Monster本身,而不是精灵身上 */
  24.     this->setPhysicsBody(body);
  25.  
  26.     /* 设置坐标 */
  27.     this->setPosition(Point(getiPosX(), getiPosY()));
  28.  
  29.     /* Monster加入到物理世界 */
  30.     parent->addChild(this);
  31.  
  32. }

代码注释已经够详细的了,大概的意思就是:

1. 创建一个Sprite对象,用于表现Monster的样子

2. 创建一个刚体,用于做物理碰撞

3. 设置怪物Tag类型

4. 将刚体添加到Monster上

5. Monster根据自身属性进行设置(比如设置坐标,完整版还有出场音效、颜色之类的)

6. 将Monster添加到物理世界

你可能感兴趣的:(Cocos2dx)