添加一个精灵, 让它从高处落下
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
?
重新运行, 精灵落到底部弹得更高了
?
?
?