2012-02-15 5 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()メソッドです。

関連する問題