충돌여부 체크하기



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(200200));
    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

+ Recent posts