Cocos2dforiPhoneでパン可能なズーム可能なゲームマップを実装するための最良の方法は何ですか。画面に完全に収まらないゲームマップを除いて、モバイルSafariに似ています。または、Angry Birdsでどのように行われるか、ロープを切るなどのように。
これは横スクロールゲームではなく、ズームイン/ズームアウトできる固定ゲームエリアです。
私は新しいので、このためのチュートリアルがあれば素晴らしいでしょう。
ありがとう
Cocos2dforiPhoneでパン可能なズーム可能なゲームマップを実装するための最良の方法は何ですか。画面に完全に収まらないゲームマップを除いて、モバイルSafariに似ています。または、Angry Birdsでどのように行われるか、ロープを切るなどのように。
これは横スクロールゲームではなく、ズームイン/ズームアウトできる固定ゲームエリアです。
私は新しいので、このためのチュートリアルがあれば素晴らしいでしょう。
ありがとう
UIGestureRecognizerAPI全体を自分で不必要に再実装したように見えるJoaoCaxariaのアドバイスに絶対に従うべきではありません。
以下のリンクで選択した回答で指定されているように、UIKitの利用可能なジェスチャレコグナイザーを使用して、それらをsharedDirectorのopenGLViewにアタッチするだけです。これらにより、パン、ピンチ、タップなどの検出が可能になります。UILongPressGestureRecognizerを使用してドラッグを検出することもできます。
ゲームでPhysicsを使用しない場合は、ズーム/パンに関するチュートリアルがたくさんあります。touchesMovedズーム/パンコードでワールドスケールを設定するだけです。
しかし、Angry Birdのようなものを使用する場合は、Box2d / Chipmunk物理エンジン(cocos2dに付属)を使用できますが、Angry Birdsのような物理世界を構築するには、独自のレベルエディターを作成するか、 LevelSVG(Cocos2dの人々による)SVGエディターで視覚的に世界を作り、それをBOX2dに解析するようなものです。
あなたの世界の物理学のボディを備えたズーム/パンに関しては、あなたの物理学の世界があなたがスケーリングしようとしているあなたのレイヤーにある限り、それは機能します。
ただし、スケーリングするレイヤーのVISIT関数を上書きし、glOrthofまたはglScalefのいずれかでスケーリングを処理することをお勧めします。
ただし、スケーリングするレイヤーの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ヘルパークラスを確認してください。
それが役に立てば幸い、