cocos2d-xで物理エンジンを使うとノードが飛んで行く・・・
単純に下の方に動かない地面を置き、そこにポトッとボールを落とすだけのプログラムを作りました。
実行して、しばらく見てると、ボールがびくびく動き出したり、ピョンピョン飛び跳ねたり、時にはすごい速度で画面外へ飛んで行ってしまうことがあります。
毎回そうなるわけではなく、何事もなくじっとしていることもあります(というか普通はじっとしてます)
重力の強さやマテリアルの設定を変えてみてもダメでした。
何か気を付けることがあれば教えてください。
Scene* TestScene::createScene()
{
auto scene = Scene::createWithPhysics();
PhysicsWorld* world = scene->getPhysicsWorld();
world->setGravity(Vec2(0, -500));
world->setSpeed(1.0f);
auto layer = TestScene::create();
scene->addChild(layer);
return scene;
}
bool TestScene::init()
{
if (!Layer::init())
{
return false;
}
//地面
{
auto ground = Sprite::create("images/ground.png");
ground->setPosition(320, 16);
auto pb = PhysicsBody::createBox(Size(640, 32));
pb->setDynamic(false);
pb->setRotationEnable(false);
ground->setPhysicsBody(pb);
this->addChild(ground);
}
//ボール
{
auto ball = Sprite::create("images/ball.png");
ball->setPosition(300, 80);
auto pb = PhysicsBody::createCircle(16);
ball->setPhysicsBody(pb);
this->addChild(ball);
}
return true;
}
cocos2D-Xのバージョンは3.8でVisualStudio2013を使っています。
よろしくお願いいたします。