今回はオブジェクト(画像や文字など)の接触判定について紹介したいと思います。
当たり判定は大きく分けると矩形同士の判定と矩形とポイントの判定があります、cocos2d-xでは標準でそれらの接触判定を行う関数があるのでそれらを利用して判定を行います。まずは当たり判定のイメージを図でみてみましょう。
そして当たり判定が行われる時のイメージはこのような感じです。
まずは矩形同士の接触判定です
Rect rect1,rect2; //矩形同士の当たり判定 if(rect1.intersectsRect(rect2)){ log("接触しています"); }
Rect rect; Point point; //矩形とポイントの当たり判定 if(rect.containsPoint(point)){ log("接触しています"); }
//画面サイズの取得 Size size = Director::getInstance()->getVisibleSize(); //四角画像を2枚貼り付ける auto box1=Sprite::create("box1.png"); auto box2=Sprite::create("box2.png"); box1->setPosition(Vec2(size.width/3,size.height/2)); box2->setPosition(Vec2(size.width/3*2,size.height/2)); this->addChild(box1); this->addChild(box2); //画像から矩形サイズを取得する auto rect1=box1->getBoundingBox(); auto rect2=box2->getBoundingBox(); //結果判定用ラベル auto result=Label::create(); result->setPosition(Vec2(size.width/2,size.height/7)); result->setScale(3.0f); result->setString("接触していません"); this->addChild(result); //もし接触していたらラベルの文字を変更 if(rect1.intersectsRect(rect2)){ result->setString("接触しています!"); }