解決できないように見える問題があります。指の動きに基づいて画面上のスプライトを移動したいのですが、スプライトをタッチ位置に向かって移動させるのではなく、指が画面上を移動するのと同じようにスプライトを移動させたいです。
例: ユーザーが画面上 (任意の位置) に指を置き、画面上で指を 200 ピクセル左にドラッグすると、スプライトも左に 200 ピクセル移動する必要があります。
私のアプローチは、開始時のプレーヤーの位置を保存し、開始位置と指の現在の位置の差を計算して、スプライト自体の開始位置に追加することでした。
これが私のコードです
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
if([touches count] == 1){
UITouch *touch = [touches anyObject];
CGPoint startPos = [touch locationInView:[touch view]];
startPosition = startPos;
}
}
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
if([touches count] == 1){
UITouch *touch = [touches anyObject];
CGPoint touchPos = [touch locationInView:[touch view]];
CGPoint playerPos = player.position;
float yDifference = startPosition.y - touchPos.y;
playerPos.y = playerPos.y - yDifference;
// just to change to GL coordinates instead of the ones used by Cocos2D
// still doesn't work even if I remove this...
CGPoint convertedPoint = [[CCDirector sharedDirector] convertToGL:playerPos];
[player setPosition:convertedPoint];
}
}
私が抱えている問題が明確であることを願っていますが、そうでない場合は、遠慮なく質問するか、さらに説明してください。私はかなり長い間これにこだわっています:'(