5

Cocos2dforiPhoneでパン可能なズーム可能なゲームマップを実装するための最良の方法は何ですか。画面に完全に収まらないゲームマップを除いて、モバイルSafariに似ています。または、Angry Birdsでどのように行われるか、ロープを切るなどのように。

これは横スクロールゲームではなく、ズームイン/ズームアウトできる固定ゲームエリアです。

私は新しいので、このためのチュートリアルがあれば素晴らしいでしょう。

ありがとう

4

3 に答える 3

7

UIGestureRecognizerAPI全体を自分で不必要に再実装したように見えるJoaoCaxariaのアドバイスに絶対に従うべきではありません。

以下のリンクで選択した回答で指定されているように、UIKitの利用可能なジェスチャレコグナイザーを使用して、それらをsharedDirectorのopenGLViewにアタッチするだけです。これらにより、パン、ピンチ、タップなどの検出が可能になります。UILongPressGestureRecognizerを使用してドラッグを検出することもできます。

cocos2d-iOS-ジェスチャ認識機能

于 2011-04-23T21:50:30.123 に答える
4

ゲームでPhysicsを使用しない場合は、ズーム/パンに関するチュートリアルがたくさんあります。touchesMovedズーム/パンコードでワールドスケールを設定するだけです。

しかし、Angry Birdのようなものを使用する場合は、Box2d / Chipmunk物理エンジン(cocos2dに付属)を使用できますが、Angry Birdsのような物理世界を構築するには、独自のレベルエディターを作成するか、 LevelSVG(Cocos2dの人々による)SVGエディターで視覚的に世界を作り、それをBOX2dに解析するようなものです。

あなたの世界の物理学のボディを備えたズーム/パンに関しては、あなたの物理学の世界があなたがスケーリングしようとしているあなたのレイヤーにある限り、それは機能します。

ただし、スケーリングするレイヤーのVISIT関数を上書きし、glOrthofまたはglScalefのいずれかでスケーリングを処理することをお勧めします。

于 2010-10-19T22:42:56.583 に答える
1

ただし、スケーリングするレイヤーのVISIT関数を上書きし、glOrthofまたはglScalefのいずれかでスケーリングを処理することをお勧めします。

訪問機能を上書きしません...タッチディスパッチャーにレイヤーを追加するだけです。

[[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0];

そして、デリゲート関数を実装します。

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

この関数内で、ユーザーがパン/ズームしていることに気付いた場合は、シーンの位置/スケールのプロパティを更新するだけです。

ユーザーがパンまたはズームしているかどうかを確認するには、https ://github.com/caxaria/LoopingMenuでこのInputControllerヘルパークラスを確認してください。

それが役に立てば幸い、

于 2010-11-19T16:26:17.033 に答える