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 |