大家好,我使用cocostudio1.4.0.1新建了一个场景,场景中有一个动画。我想要达到的效果是,在这个场景中,动画初始能够有一个向下的初始速度,通过物理引擎完成。
bool GameMainScene::init()
{
if(!Scene::init())
{
return false;
}
//获取窗口大小
Size size = Director::getInstance()->getWinSize();
//增加重力效果
Vect gravity(0, -0.5f);
this->getPhysicsWorld()->setGravity(gravity);
/* 开启测试模式 */
this->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
//加载场景
auto sceneNode = (Layout*)SceneReader::getInstance()->createNodeWithSceneFile("publish/Scene_Fight.json");
this->addChild(sceneNode, 0, 1);
//设置物理
auto body = PhysicsBody::createBox(Size(32, 68));
body->getShape(0)->setFriction(0);
body->getShape(0)->setRestitution(1.0f);
body->setCategoryBitmask(1); // 0001
body->setCollisionBitmask(1); // 0001
body->setContactTestBitmask(1); // 0001
//从场景资源中取出英雄动画
Node* playNode = sceneNode->getChildByTag(10020);
playNode->setPhysicsBody(body);
player = new Player(playNode);
player->setPosition(Point(100,200));
this->addChild(player);
..........
}
```
以上是我的GameMainScene类中的init方法实现,GameMainScene是一个Scene类。目前添加在player中的物理引擎效果不起作用,而且debug模式下应该出现的那个32*68的矩形也没有出现。尝试在init方法中通过创建一个sprite的方式,然后通过setPhysicsBody的方法设置body参数的话,是有效果的。