2014年7月11日金曜日

物理とは・・・

皆さんこんにちは!

連日熱くなってきてベッドに氷枕
持ち込んでいるみりんです。
寝室にクーラーが無いのは致命的ですね。


今日はお仕事の話でもしようかなと。

で、唐突ですが皆さん物理は得意でしたでしょうか?
そう、高校の授業ででてくるアレです。
私は苦手でしたね。数字や記号が頭のなかでぐるぐるしてました。

物理を調べると、

「万物の理、すなわち人間やあらゆる物の介入によってその存在を左右されない普遍的な法則」

と、でますね。
奥が深い言葉です。


ゲームで動きを自然にみせるには物理がとても大事なのです。
私もそれなりの物理的なロジックを組んだりしたことがあります。
ただ、なんちゃってロジック(厳密にはキチンとした物理演算ではない)ですけどね。

前ふりが長くなりましたが、今日の話ですが、
cocos2dx3.0を勉強していて驚いたのが
物理演算を全部やってくれる!のです。

やりかたはカンタンで。

①シーンの作成を少し調整
//-------------------------------------------
//auto scene = Scene::create();               // 通常シーンの作成をコメントアウト
auto scene = Scene::createWithPhysics();  // 物理演算モードでシーン作成!

//Worldの重力情報を適当に設定
Vect gravity;
gravity.setPoint(0.0f, -10.0f);
scene->getPhysicsWorld()->setGravity(gravity);
scene->getPhysicsWorld()->setSpeed(6.0f);

//物理オブジェクトにを可視的にしてくれるデバックモードを設定。赤く表示される
scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
//-------------------------------------------


②スプライトに当たり判定を付ける
//-------------------------------------------
// スプライトの生成と追加
auto sprite = Sprite::create();
sprite->setPosition(Point(320,800));
sprite->setColor(Color3B(255,255,255));

// 剛体の生成
auto pBody = PhysicsBody::createCircle(10.0f); // 円の当たり判定
pBody->setDynamic(true); // 重力干渉するか?
pBody->setRotationEnable(true); // 回転させるか?

// スプライトに剛体を関連付ける
sprite->setPhysicsBody(pBody);
addChild(sprite);
//-------------------------------------------

なんと、これだけ!
あとは適当に地面とかを②と同じ方法で
配置すれば、OKです。
便利な世の中になったもんですね。
cocos2dxを触っている人は色々試してみると面白いですよ!





ここからは余談です。

台風一過
今朝、台風が過ぎて天気が良かったので散歩にいってきました。
ちくわはものすごく舌が長いです。


それでは、また、どこかで!!