충돌여부 체크하기
containsPoint() : 영역과 포인트 충돌여부 체크
intersectsRect() : 두영역의 충돌여부 체크
hpp)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #ifndef test185_hpp #define test185_hpp #include "cocos2d.h" USING_NS_CC; class Test185 : public cocos2d::Layer { public: static cocos2d::Scene* createScene(); virtual bool init(); // implement the "static create()" method manually CREATE_FUNC(Test185); bool onTouchBeganCallback(Touch *touch, Event *event); }; #endif | cs |
c++)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include "test185.hpp" USING_NS_CC; Scene* Test185::createScene() { auto scene = Scene::create(); auto layer = Test185::create(); scene->addChild(layer); return scene; } bool Test185::init() { if ( !Layer::init()) { return false; } //싱글터치 이벤트 리스너 생성 auto listener = EventListenerTouchOneByOne::create(); //화면터치시 콜백메서드 지정 listener->onTouchBegan = CC_CALLBACK_2(Test185::onTouchBeganCallback, this); //이벤트 디스패처에 리스너 설정 Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 1); //이미지를 생성하여 화면에 적용 auto sprite = Sprite::create("testimage.png"); sprite->setPosition(Point(200, 200)); sprite->setTag(1); this->addChild(sprite); return true; } //화면터치시 호출되는 콜백메서드 bool Test185::onTouchBeganCallback(Touch *touch, Event *event){ Point location = touch->getLocation(); //터치한 위치정보 가져오기 auto sprite = (Sprite*)this->getChildByTag(1); //태그값으로 스프라이트 객체를 가져오기 //getBoundingBox() : 화면에 보이는 객체의 영역을 반환해주는 함수 Rect rect = sprite->getBoundingBox(); //스프라이트의 영역을 Rect객체에 저장하기 //containsPoint() : 영역과 포인트 충돌여부 체크 //intersectsRect() : 두영역의 충돌여부 체크 if(rect.containsPoint(location)){ CCLOG("containsPoint x : %f , y : %f", location.x, location.y); } else{ CCLOG("Not In Image x : %f , y : %f", location.x, location.y); } return true; } | cs |
결과
이미지 영역과 터치포인트의 충돌여부를 확인한다
1 2 3 4 5 6 | containsPoint x : 188.535202 , y : 204.714920 Not In Image x : 310.869080 , y : 165.061874 containsPoint x : 191.909927 , y : 203.027573 Not In Image x : 355.584259 , y : 192.903381 containsPoint x : 225.657227 , y : 222.432251 Not In Image x : 333.648529 , y : 204.714920 | cs |
'IT > - 프로그래밍' 카테고리의 다른 글
OpenCV 침식연산 예제 (0) | 2017.05.04 |
---|---|
OpenCV 팽창연산 예제 (0) | 2017.05.03 |
OpenCV 이미지 대칭하기 (0) | 2017.05.01 |
OpenCV 이미지 회전하기 (0) | 2017.04.30 |
OpenCV 이미지 확대하기 (0) | 2017.04.29 |