Box2d をやってみる… チュートリアル2 (5) Moving The Paddle … 1

今日は調子がいいなー、よーし、パッドを動かすところまで行くぞー。 ^^

まずはタップが出来るように init に以下の記述を。

    //シングルタップが出来るように
    {
        ccTouchesMode mode = kCCTouchesOneByOne;
        this->setTouchMode(mode);
        this->setTouchEnabled(true);
    }

次は ccTouchBegan をオーバーライドする感じですね。
まずは、CCLayer.h から ccTouchBegan の宣言部分をコピって、ヘッダーに張り付けw

virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

よし、タップだなー… とその前に…。
なんだこれは… 初めて見る型の変数を宣言する…?

    b2MouseJoint * _mouseJoint;

タップ操作を利用するためのモノっぽい…(まんまww ^^;
まぁ、とりあえず、 ccTouchBegan を実装してみます。

bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
    do
    {
        if (_mouseJoint)
        {
            break;
        }

        b2Vec2 vecPos;
        {
            CCPoint pos = pTouch->getLocation();
            pos = ccpMult(pos, 1.0f / PTM_RATIO);

            vecPos = b2Vec2(pos.x, pos.y);
        }

        if (_paddleFixture->TestPoint(vecPos))
        {
            b2MouseJointDef md;
            md.bodyA = _groundBody;
            md.bodyB = _paddleBody;
            md.target = vecPos;
            md.collideConnected = true;
            md.maxForce = 1000.0f * _paddleBody->GetMass();

            _mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md);

            _paddleBody->SetAwake(true);
        }

    } while (0);

    return true;
}

こんな感じでいいのかな?
タップした位置に Paddle があれば b2MouseJoint を生成するって感じですね。
b2MouseJointDef の設定項目…忘れそうだなーwww ^^;

とりあえず ccTouchMove, ccTouchEnd に続く。

 


Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です