首页 > 代码库 > Cocos2d-x Physics 3 - 掉落的头像

Cocos2d-x Physics 3 - 掉落的头像

添加一个精灵, 让它从高处落下

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实例

?

运行结果可以看到屏幕有一个精灵从高度由慢到快落下, 碰到底部还会反弹

?

2014 11 08 16 17 33

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

自定义PhysicsMaterial类的值

auto spriteBody = PhysicsBody::createBox(sprite->getContentSize(), PhysicsMaterial(0.0f, 1.2f, 0.2f));

?

密度 = 0.0f

恢复力 = 1.2f

摩擦力 = 0.2f

?

重新运行, 精灵落到底部弹得更高了

?

?

?

Cocos2d-x Physics 3 - 掉落的头像