昨日は土台の準備までなんとか出来た… ^^;
デバッグのための draow()メソッドの 4行ほどの記述の内容をいつも忘れてしまう… ^^;;
とりあえず、今日は動かすトコまでを目標にがんばる!
http://www.raywenderlich.com/28602/intro-to-box2d-with-cocos2d-2-x-tutorial-bouncing-balls
英語全く読めないけど、iPhoneを傾けて画面内のボールを跳ねさせる感じのものを作るみたいですね。
とりあえず、下準備は出来ているので、…これからはこんな感じでいいのかな… ^^;
- b2BodyDefを用意
- b2BodyDefを使ってb2Bodyを作成
- Shapeを用意
- Shapeを使ってb2BodyでFixtureを作成
body用のCCSpriteも用意しておくみたい。
HelloWorldScene.h
private: cocos2d::CCSprite * _ball;
HelloWorldScene.cpp
const CCSize winSize = CCDirector::sharedDirector()->getWinSize(); const CCPoint center = ccpMult(ccpFromSize(winSize), 0.5f); //CCSprite { CCSprite * sprite = CCSprite::create("ball.png"); sprite->setPosition(center); this->addChild(sprite); _ball = sprite; }
よし。
次は body を…
b2Body * body; { b2BodyDef bodyDef; { bodyDef.type = b2_dynamicBody; bodyDef.position.Set(center.x / PTM_RATIO, center.y / PTM_RATIO); //CCSprite bodyDef.userData = _ball; } body = _world->CreateBody(&bodyDef); }
こんな感じ。
次は Fixture を作成。まず shapeプロパティのための形状を作成しておく感じ。
b2FixtureDef fixtureDef; { b2CircleShape shape; shape.m_radius = (_ball->boundingBox().size.width * 0.5f) / PTM_RATIO; fixtureDef.shape = &shape; fixtureDef.density = 1.0f; fixtureDef.friction = 0.2f; fixtureDef.restitution = 0.8f; } body->CreateFixture(&fixtureDef);
ココまで来たらとりあえずエミュレーターで確認してみる。
今日も時間がなくなったのでココまで…
つづきはまた明日がんばろう ^^;