cocos2d study #11

터치


1. 터치 동작 연구

오늘은 터치에 대해 연구해 보자.

(1) 반드시 확인할 것

간혹 터치 관련 메소드를 넣었으나 반응이 없을 경우가 있다.

터치 활성화 코드를 넣지 않은 경우가 많으므로, 반드시 확인해야 한다.

아래 코드를 init 메소드에 넣으면 된다.

self.isTouchEnabled = YES;

(2) 터치가 발생하면 실행되는 메소드

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)withEvent
{
    [ball1 stopActionByTag:1];	// 태그 1 액션을 stop

    NSLog("Touch!");
}

터치 이벤트 코드는 매우 자주 사용하므로 필요할 때마다 copy&paste로 사용하면 된다.

(3) 드래그 동작

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)Event
{
    // …
}

드래그를 처리할 경우에는 ccTouchesBegan을 ccTouchesMoved로 바꿔 사용하면 된다.

(4) 터치가 끝났을 때

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)Event
{
    // …
}

화면에서 손가락을 떼었는지 판단한다.

2. OpenGL 좌표로 변환

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)withEvent
{
    // UITouch는 좌상단이 (0,0) 이다.
    UITouch *touch=[touches anyObject];

    CGPoint touchPoint;

    // 터치가 발생한 좌표를 얻는다.
    touchPoint = [touch locationInView:[touch view]];
    
    // OpenGL 좌표로 변환한다.
    touchPoint = [[CCDirector sharedDirector] convertToGL:touchPoint];
}

아이폰 좌표를 OpenGL 좌표로 변환하는 방법이다.

변환을 하는 이유는, 터치가 발생했을 때 받는 좌표가 아이폰의 좌표계이기 때문에 cocos2d에서는 그 좌표를 곧바로 쓸 수 없기 때문이다.

위의 코드를 수정할 일은 거의 없으므로 필요할 때마다 copy&paste 하면 된다.



PS

터치도 알아야 할 것이 많다.

아직은 기초 활용법만 익혔을 뿐이다.

더 열심히 하자!

'개발 > Cocos2d' 카테고리의 다른 글

cocos2d study #13  (0) 2012.10.26
cocos2d study #12  (0) 2012.10.26
cocos2d study #10  (0) 2012.10.26
cocos2d study #09  (0) 2012.10.26
cocos2d study #08  (0) 2012.10.25

+ Recent posts