1

Cocos2d は私にとってかなり新しいものなので、この状況で何をすべきかわかりません:

リスクみたいなゲームを作りたい。今、世界地図のような背景画像を作成しました(テスト用)。そして、このマップではスワイプジェスチャが必要なので、iPadでマップ全体を移動できます(マップはかなり大きいので、スワイプしたいです)。

私の問題は、使用すべきオブジェクトの名前がわからないことです。そして、ジェスチャを最適な方法で実装するにはどうすればよいですか (自分で動きを計算する必要がありますか?)。

ありがとう!ステファン。

4

2 に答える 2

3

UIKit の Pan Gesture Recognizer を CCDirector のビューに接続し、CCLayer クラスでパン ジェスチャを処理することができます。そのようにして、パンの動きごとに背景を移動するハンドル メソッドを持つことができます。(cocos2d 1.0.1 でのコード、2.0 バージョンでも同様のことができます)

UIPanGestureRecognizer* pan = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)] autorelease];
CCDirector* director = [CCDirector sharedDirector];
[[director openGLView] addGestureRecognizer:pan];

Handler メソッドは次のようになります。

- (void)handlePanGesture:(UIGestureRecognizer*)gestureRecognizer {
 // If there is more than one pan gesture recognizer connected with this method, you should remember pan and check if gestureRecognizer is equal to pan 

 switch (gestureRecognizer.state) {
    case UIGestureRecognizerStateBegan: {

        // Do something that needs to be done when pan gesture started

        break;
    }
    case UIGestureRecognizerStateChanged: {

        // Get pan gesture recognizer translation
        CGPoint translation = [(UIPanGestureRecognizer*)gestureRecognizer translationInView:gestureRecognizer.view];

        // Invert Y since position and offset are calculated in gl coordinates
        translation = ccp(translation.x, -translation.y);

        // Here you should move your background, probably in oposite direction of translation vector, something like
        background.position = ccp(background.position.x - translation.x, background.position.y - translation.y);

        // Refresh pan gesture recognizer
        [(UIPanGestureRecognizer*)gestureRecognizer setTranslation:CGPointZero inView:gestureRecognizer.view];

        break;
    }
    case UIGestureRecognizerStateEnded: {

        // Do some work that should be done after panning is finished

        break;
    }
    default:
        break;
    }
}
于 2012-11-28T19:14:16.867 に答える
-1

オブジェクトを追加するためにこれを探していると思います:

CCSprite *objectName = [CCSprite spriteWithFile:@"fileName.png"];
    [self addChild:objectName];

デフォルトでは、オブジェクトは左下隅にあると思います。

于 2012-11-26T20:03:55.173 に答える