2011-07-16 3 views
2

私はCocos2DとObj-Cの新機能ですので、このような問題が発生する可能性があります。 私の問題は次のようになります: 画面にスプライトがあり、ユーザーはその上をタッチしなければならず、押したまま少し上に移動してからタッチを離します。 帽子を付けたプレイヤーのスプライトを想像してください。帽子に触れて、その方向に向かって帽子を飛ばすには指を少し上に動かす必要があります。 これを実現するにはどうすればよいでしょうか?CCTouchesBegan - CCTouchesEndedは両方の座標を必要とします

私がこれまでに得たことはこれです:

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

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

iはCCTouchesBeganの位置を決定する別の方法を作成する必要があり、その後、私はその後、角度を計算して作るCCTouchesEnded方法、に値ということを与えてください帽子は飛んでる? または上記の方法自体で接触が始まった位置を特定することはできますか?

はどんな答え:)タッチが終了したときに、あなたが投稿したメソッドだけカバーすること

答えて

0
UITouch *touch = [ touches anyObject]; 

CGPoint new_location = [touch locationInView: [touch view]]; 
new_location = [[CCDirector sharedDirector] convertToGL:new_location]; 
NSLog(@"y: %1f", new_location.x); 
NSLog(@"x: %1f", new_location.y); 
1

いただき、誠にありがとうございます。つまり、ユーザーが指を画面から離した場合にのみトリガーされます。それがあなたが望むものなら、それは大丈夫です。 CGPoint変数 "location"は、あなたが望むポイントです。

CGPointは2つの浮動小数点値です。あなたは持っています:

location.x 
location.y 

これはタッチが始まった場所を教えてくれません。私が言ったように、それは、ユーザーが指を画面から離したときにだけトリガします。ユーザーが画面に触れた場所を知る必要がある場合は、そのための別の方法があります。ここには標準的なタッチメソッドがあります:

// Touch first detected 
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
// Touches moved 
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
// User took finger off screen 
- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event 
// Touch was somehow interrupted 
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
関連する問題