添加一个精灵, 让它从高处落下
boolHelloWorld::init()
{
//
// 1. super init first
if ( !Layer::init() )
{
return false;
}
#if CC_ENABLE_BOX2D_INTEGRATION
log("启用了Box2d");
#endif
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//创建一个精灵
auto sprite = Sprite::create("Icon-58.png");
//创建一个刚体
auto spriteBody = PhysicsBody::createBox(sprite->getContentSize(), PHYSICSBODY_MATERIAL_DEFAULT);
//将刚体赋值给精灵, 这时精灵就具备了物理特性
sprite->setPhysicsBody(spriteBody);
//设置精灵的位置
sprite->setPosition(visibleSize.width/2, visibleSize.height/3*2);
//将精灵添加到层
this->addChild(sprite);
this->addChild(sprite);
...
}
createBox方法有三个参数, 依次是:
1. 矩形区域的大小
2. 设置材质
3. 边线宽度
精灵的材质也是使用了预设的PHYSICS_MATERIAL_DEFAUTL实例
运行结果可以看到屏幕有一个精灵从高度由慢到快落下, 碰到底部还会反弹
自定义PhysicsMaterial类的值
auto spriteBody = PhysicsBody::createBox(sprite->getContentSize(), PhysicsMaterial(0.0f, 1.2f, 0.2f));
密度 = 0.0f
恢复力 = 1.2f
摩擦力 = 0.2f
重新运行, 精灵落到底部弹得更高了