1

iPadでゲームを作ろうとしています。ゲームの場合、Hay Day や Clash of Clans のようなスクロールする背景が必要です。これには Cocos2D を使用し、拡張子は CCLayerPanZoom です。しかし、これでは素敵なスクロール効果は得られません (指の動きを止めてもスクロールは止まりませんが、ゆっくりと停止します)。そして、この拡張クラスのズーム機能は 100% 良くないと思います。

これに対する解決策や良いクラスはありますか?

ありがとうございます。

4

2 に答える 2

0

CCLayer を使用して、移動したいすべての子をこのレイヤーに追加します。すべてを移動する場合は、CCLayer を update で移動します。

レイヤー座標を現実世界の座標に変換するには、以下の関数を使用します:

-(CGRect)worldBoundingBox {

 CGRect rect = CGRectMake(0, 0, contentSize_.width,contentSize_.height);
return CGRectApplyAffineTransform(rect, [self nodeToWorldTransform]);

}

于 2012-12-10T10:08:17.413 に答える
0

ああ少年。最近のプロトタイプでこの問題に取り組んだばかりですが、先のことは申し訳ありません。これを行うにはいくつかの方法がありますが、どちらもクリーンでもシンプルでもありません。

より直感的なアプローチは、カメラの位置を移動することです。これは、シーンの CCCamera を操作することで実行できます。この意味で、飛行機で上空を飛んでいるかのように、世界中をスクロールします。すべてのオブジェクトが「現実世界」の位置を維持するため、オブジェクト間の衝突検出は単純なままです。ゲーム ワールドでスプライトが (100,100) にある場合、カメラを左に 500 スクロールしても、スプライトは (100,100) のままです。

残念ながら、これはタッチ入力に関連する多くの問題を引き起こします。タッチ座標が画面の解像度に制限されているため、「このタッチがこのノード上にある」かどうかを簡単に確認できなくなりました。カメラが (1000,1000) にあり、画面の中央にあるスプライトをタッチすると、そのタッチ位置は (320,280) (画面の中央) に登録されます。すべてのタッチ計算には、カメラのオフセットを含める必要があります。これは、覚えるのが難しく、繰り返し含めるのが面倒です。

2 番目の手法は、ワールドを CCLayer に配置し、そのレイヤーをカメラの下に移動することです。このアプローチは面倒だと思ったので、あまり長くは追求しませんでした。

于 2012-12-10T02:57:31.560 に答える