2012-02-15 1 views
0

Cocos2d를 사용하면서 게임을 만들 때, 화면 아래쪽에 여전히 스프라이트가 있습니다. 화면을 두 드리면 스프라이트가 화면을 두드린 곳으로 이동 한 다음 일련의 프레임을 통해 애니메이션 한 다음 원래 위치로 이동하겠습니다. 나는 CCSequence를 사용해야 할 필요가 있음을 알고 있지만, 나는 그것을 터치의 위치로 이동시키는 방법을 아직 모른다. 지금이 순간, 나는 주위를 수색하고이 코드를 사용하고 있습니다 :터치 후 스프라이트 애니메이션하기?

-(void) TouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
UITouch *Touch = [touches anyObject]; 
CGPoint location = [Touch locationInView:[Touch view]]; 
[swat runAction:[CCMoveTo actionWithDuration:3 position:location]];} 

내가 오류를 받고 없습니다,하지만 스프라이트가 응답하지 않습니다. 어떤 아이디어?

답변

3

첫째, 당신은 방법의 이름에 오타가 있습니다. 그것은 "TouchesBegan"이 아니라 "ccTouchesBegan"입니다.

-(void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event

둘째, 스프라이트가 예상 위치로 이동하지 않습니다. locationInView은 UIKit 좌표의 점을 반환하고 CCMoveTo은 OpenGL 좌표를 사용합니다.

UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

+0

나는 이것을 시도해 보았지만 스프라이트는 아직 움직이지 않았다. 파일이나 그와 비슷한 것을 가져올 필요가 있습니까? convertToGL을 사용하지 않아도 OpenGL을 사용하여 직접 이동하는 방법은 무엇입니까? – akuritsu

+0

그렇지 않으면 레이어에 문제가 될 수 있습니까? – akuritsu

+1

이 레이어를 터치 했습니까? self.isTouchEnabled = YES를 추가하십시오. 레이어의 init 메소드. – Kreiri

1

사용

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
0

먼저 확인하십시오 당신이 TouchDispatcher을 등록 :

(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event method 

을하고 또한 당신이 확인 :

(void) registerWithTouchDispatcher 
{ 
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; 
} 

그런 다음 구현 OpenGL을 좌표에 당신은 포인트를 변환해야합니다 :

self.isTouchEnabled = YES; 

코드 줄은 init() 방법입니다.