前章で少し触れましたが、今回は物理シーンに剛体を設置する方法を紹介します。
まず剛体とは?
剛体とは力の作用で変形しない物体
と定義されていますが、実際には存在しない物理の世界の仮想的なモデルです。
実世界では質量と大きさを持つ物体は大きな力を加えれば少なからず変化します。仮に剛体が世の中に存在したらそれで建物つくりますよね、だって絶対に壊れないのですから(まず素材を加工できないので作れない)。
しかし一般的な物体も力を作用させなければ剛体として見れますよね、なのでcocos2d-xで設置するオブジェクトも物理法則を適用させますがその時点で力を作用させていないので剛体として扱います。なので剛体といっても難しく捉えずに物理法則が適用されるオブジェクトなんだなってくらいの認識でいいと思います。
ではここからが本題です、どのように剛体を設置するかです。実は画像や文字を貼り付けたときと手順は変わりません、ただ物理法則を受けるのか、どのくらい影響させるかなどの設定が増えているだけです。ではコードで見てみましょう。
Player.cpp(init関数内)
//まずは画像を読み込む auto player=Sprite::create("player.png"); //位置を設定 player->setPosition(Vec2(size.width/2,size.height/2)); //接触判定を円で生成 (半径:画像サイズの半分) auto body=PhysicsBody::createCircle(player->getContentSize().width/2); //重力の影響を受けるか(trueだと下へ落ちていってしまう) body->setDynamic(false); //回転運動が可能か body->setRotationEnable(true); //物理法則を画像に適用させる player->setPhysicsBody(body); //貼り付け this->addChild(player);
scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
またbody->setDinamic(true)とすると重力を受けるのでプレイヤーが下へ落下していくのも確認できます。
次章では今回作成したプレイヤーの重力設定をONにしても下へ落ちていかないように床を作成して、床との当たり判定によってプレイヤーが着地できるようにしてみたいと思います。
プレイヤー画像提供:臼井の会