1

cocos2dスプライトを使用して、画面上のキャラクターに対してユーザーがどこに触れているかを判断しようとしています。ユーザーがスプライトの左側をクリックすると、スプライトが左側に実行されるようにします。その逆も同様です。私の問題は、ユーザーがタッチを離さずに一方の側をクリックしてもう一方の側に移動すると(cctouchendedは起動しません)、スプライトは実行を続けますが、方向が間違っていることです。ユーザーのタッチがキャラクターの反対側に移動したかどうかを判断するためのチェック(および方法)をどこに実装しますか?

私が試した現在のコード:

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

    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInView: [touch view]];  
    CGPoint moveDifference = ccpSub(touchLocation, _character.position);
    if (moveDifference.x < 0) {
      _character.flipX = YES;
    } else {
      _character.flipX = NO;
    }   
}

ありがとう。

4

3 に答える 3

0

代わりにccTouchesBeganに入れることはできませんか?それで解決すると思います...

于 2010-12-13T12:13:00.123 に答える
0

現在の場所をメモする必要があります。この関数ccp(location.x、location.y)を使用すると、スプライトを目的の方向に移動できます。

于 2011-01-25T18:03:15.037 に答える
0

このようにタッチ位置を変換する必要があります。

CGPoint location = [touch locationInView: [touch view]];    
location = [[CCDirector sharedDirector] convertToGL: location];

次に、cocos2dのビューで正しいタッチ位置を取得します。

于 2011-07-21T06:41:42.163 に答える