【Cocos2d-x】複数画像のタッチ判定
【Cocos2d-x】複数画像のタッチ判定
今回は複数の画像から、どの画像をタッチしたかの判定を行い、その画像を消去するということをやります。
まずはこちらの画像をダウンロードして、プロジェクトに追加して下さい。
ヘッダーに画像格納用の配列と、画像上滋養のメッドを用意します。
void setUpItems(); Vector<Sprite*> _items;
setUpItems()を以下のように実装していきます。
void HelloWorld::setUpItems() { Size winSize = Director::getInstance()->getWinSize(); //30個の画像を画面上のランダムな位置に表示して配列に格納 for (int i = 0; i < 30; i ++) { Sprite *item = Sprite::create("item.png"); int px = rand() % (int)winSize.width; int py = rand() % (int)winSize.height; item->setPosition(Vec2(px, py)); this->addChild(item); _items.pushBack(item); } }
タッチを検知した時に、画像がタッチされたかを検知して、画像がタッチされていた場合は画像を消します。
void HelloWorld::onTouchEnded(cocos2d::Touch *pTouch, cocos2d::Event *pEvent) { Vec2 location = pTouch->getLocation(); for (int i = 0; i < (int)_items.size(); i ++) { Sprite *item = _items.at(i); Rect spriteRect = Rect(item->getPosition().x - item->getContentSize().width/2, item->getPosition().y - item->getContentSize().width/2, item->getContentSize().width, item->getContentSize().height); if (spriteRect.containsPoint(location)) { item->removeFromParent(); _items.erase(i); i --; } } }
今回は以上です。
この記事へのコメントはこちら