問題タブ [ccspritebatchnode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
98 参照

ios - ccsprite が別の子であるが、バッチ ノードを使用している効果を複製するにはどうすればよいですか?

私が設計しているゲームでは、ネストされた複数の CCSprite を使用しているため、親スプライトが移動、回転、スケーリングなどすると、子スプライトも自動的に動作し、孫も同様に動作します。

それはうまく機能しますが、バッチノードを実装していないため、すぐに行き詰まります.現在、一度に4000以上の描画呼び出しを行っていますが、これは明らかに最適ではありません.

ただし、私が知る限り、バッチ ノードを使用する唯一の方法は、すべてのスプライトをバッチ ノードの子にすることです。それぞれの親をバッチ ノードに追加してから、残りをその子として追加できるのではないかと考えましたが、うまくいきません。

何か案は?親が移動するたびに各子スプライトの位置、回転、スケールなどを手動で計算する必要は避けたいと思います。現時点では、これが唯一の方法だと思われます。

0 投票する
1 に答える
142 参照

cocos2d-iphone - SpriteSheet を機能させる cocos2d

それで、まだ完全なスプライトシートのグラフィックを取得していなかったので、静的な 1 フレームのスプライトを使用して、しばらく cocos2d ゲームに取り組んできました。これでスプライトシートができましたが、実装に問題があります。

私が現在「プレーヤー」(スプライト) を作成する方法は、以下に示すように、別のプレーヤー クラスを使用することです。

Player.h

そして Player.m (かなり長いので、すべてを表示しません。キャラクターに関するすべてを定義しているだけです)

今、私の GameLevelLayer.m で、次のようにスプライトを初期化します (これは、player.m の初期化からファイル名を取得する場所です):

そのため、すべてが完全に正常に機能します。そのスプライトをスプライトシートでスプライトに変えようとすると問題が発生します。だから私はplayer.mでこれをやろうとしています

参考までに、self.forwardMarch は、ユーザーがボタンを押してプレーヤーを移動するたびに設定される bool であるため、true の場合は常にこのようにプレーヤーを移動します。

しかし、これを試してみると、エラーが発生します

'NSInvalidArgumentException', reason: '-[CCSprite setWalkAction:]: unrecognized selector sent to instance 0x88fab50'

どんな助けでも大歓迎です。

コード表示システム(色分けなど)がもっと好きなら、cocos2dフォーラムにもこれを投稿しました http://www.cocos2d-iphone.org/forums/topic/making-spritesheets-work/

編集:

さて、少し進歩しましたが、まだ少し行き詰まっています。GameLevelLayer.m の init でバッチノードとすべてのアクションを定義しました

そして、私の Player.m で実行します

NSLogs を使用して、上記のセクション ([self runAction: self.WalkAction]; が呼び出されているが、終了していないことを確認しました。ここでクラッシュが発生しますが、クラッシュの理由に関するコンソールへの出力はありません。文字通りただ言うだけです(lldb)

0 投票する
0 に答える
134 参照

cocos2d-iphone - レイヤーにスプライト バッチ ノードを追加するときのジッタリング スクロールを防止する

次のコード行を追加してスクロールする背景を (スイッチ ケースごとに) 変更するたびに、約 1 秒間、ぎくしゃくします。各背景テーマには独自のスプライト シートがあるため、2 つのバッチ ノードを使用して、変更の切り替えケースを処理します。

ジッターを防ぐ方法でレイヤーにバッチ ノードを追加するにはどうすればよいですか?

0 投票する
1 に答える
187 参照

cocos2d-iphone - スプライト シートのメモリ消費について

コードのマークされた各行がメモリ消費にどのように影響するかを知りたいです。私のスプライトシートが4MBのメモリを必要とすることを考えると。

i) 4MB のスプライト シートがメモリを消費し始めるのはどの行ですか?

ii) ライン 5 は余分なメモリ消費につながりますか?

iii) Line 8 (Line 7 を再度追加) の場合はどうなりますか?メモリにどのように影響しますか?

iv) 9 行目と 10 行目はメモリ消費にどのように影響しますか? 彼らはメモリを解放しますか?

v) バッチ ノードがしばらく使用されない場合、11 行目を使用することをお勧めしますか? 後でもう一度追加することの意味は何ですか。

0 投票する
1 に答える
425 参照

cocos2d-iphone - CCSpriteBatchNode に追加されたスプライトのバウンディング ボックスを表示するには?

CCSpriteBatchNode に追加したスプライトがいくつかあります。すべてが正常に表示されます。今、私はそれらの境界ボックスを見たいと思っています。

ccConfig に入って CC_SPRITE_DEBUG_DRAW を有効にしようとしましたが、すべての白い四角が得られます: レベルに使用するタイル、キャラクターなど.

スプライトはバッチ ノードを介して描画され、呼び出されないため、描画メソッドを使用できません。

cocos2d-iphone v2.0 を使用しています。

バッチ ノードを介して描画されているスプライトのバウンディング ボックスを描画する方法はありますか?

0 投票する
1 に答える
646 参照

ios - マルチパック テクスチャ アトラスを使用して CCSpriteBatchNode をロードする方法

多数のスプライトを含むテクスチャ パッカーを使用してテクスチャ アトラスを作成しようとすると、「8 個のスプライトが適合しません - マルチパッキングを試してください」というテクスチャ パッカー エラーが発生しました。

したがって、Texture Packer UI の [Layout] の下に、「Multipack」というボタンをクリックする必要があることがわかります。また、{n1} などのタグを使用して、複数の出力ファイルに一意の名前を付ける必要があることを示すヘルプも提供します。これは問題なく動作し、(私の場合) 2 つの plist ファイルと 2 つの png ファイル (例: GameObjectAtlas1-iPad.plist、GameObjectAtlas2-iPad.plist、GameObjectAtlas1-iPad.png、および GameObjectAtlas2-iPad.png) が作成されます。

これらの複数のファイルができたので、実際にこれらを cocos2D プロジェクトにロードする方法を説明します。1 組のファイルの場合、コードは次のようになります。

GameObjectAtlas1-iPad.png と GameObjectAtlas2-iPad.png の両方をどのようにバッチ ノードにロードしますか?

0 投票する
2 に答える
1208 参照

ios - リソース フォルダのメイン バンドルにテクスチャ アトラス ファイルが見つかりません

リソース ディレクトリ内のファイルがメイン バンドル内にあると認識されないという問題が発生しています。

texturePacker を使用して pvr ファイル形式を使用してテクスチャ アトラスを作成しています。texturePacker の出力は、xxx_iPhone-hd.pvr.ccz と xxx_iPhone-hd.plist の 2 つのファイルを生成します。これら 2 つのファイルは、cocos2d プロジェクトの Resource ディレクトリに保存されています。ファイルがリソース フォルダーに保存されたら、リソース フォルダーに移動し、右クリックして ["myProject" にファイルを追加] を選択します (アイテムをコピー先ボックスにチェックを入れません)。

私の cocos2d プロジェクトが実行され、このファイルをロードしようとすると、絶対パスがメイン バンドルに認識されません。具体的には、私のコードは次のコード行を実行します。

cocos2d コードは、デバイスに Retina ディスプレイがあることを認識し、ファイル名を変更して "StoreMenuBackground_iPhone-hd.pvr.ccz" の relPath を作成します。次に、次の実行を試みます。

これにより、フル パスが nil になります。以前、上記の手順で別の xxx_iPhone5-hd.pvr.ccz ファイルを作成しましたが、上記のコードはフルパスを正常に返します。スペルを注意深くチェックして再チェックしましたが、問題はありません。プロジェクトの「ビルドフェーズ」の「バンドルリソースのコピー」の下にあるファイルを削除して再度追加しようとしました。mainBundle にこのファイルを強制的に検索させるためにできることはありますか?