問題タブ [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.
cocos2d-iphone - CCSpriteBatchNode に追加された CCSprite をクリップする
このコードでスプライトをクリッピングしています:
次に、通常どおりスプライトを作成し、 sprite.contentSize プロパティを必要なものに調整します。
そして、それは期待どおりに機能します!
問題...
CCSpriteBatchNode に追加すると、スプライトがクリップされません... スプライトは表示されますが、クリップされません。
誰かがこれで私を助けてくれますか?
Steffen Itterheimの ClippingNode クラスも使用しましたが、CCSpriteBatchNode に追加する際にも問題があります。
どんな助けでも大歓迎です。
xcode - Cocos2d スプライトシートが読み込まれない (spriteWithSpriteFrameName)
私は cocos2d の初心者であり、開発しながら学習しています。私は cocos2d ドキュメントを読み、また Ray Wenderlich のチュートリアルから、スプライト シートを作成しようとしましたが、これまでのところ、作成したスプライト シートからスプライトを読み込むことができませんでした。単純な CCSprite spriteFromFile: を直接使用すると、スプライトが正常に表示されます。とにかく、Zwoptex でスプライトシートを作成しました。png ファイルと座標を Cocos2d .plist として選択しました。両方のファイル (png と plist) をプロジェクトの Resources グループにドラッグ アンド ドロップし、init メソッドに次のコードを記述します。
ファイル名や大文字小文字を確認し、スプライトシートを何度も作り直しましたが、plist や png にあるにもかかわらず、cocos2d は pieceB1.png を読み込めません。plist ファイルのスクリーンショットは次のとおりです。
私が得たエラー:
ありがとう。
ios - GLuintから対応するテクスチャ名を取得するにはどうすればよいですか?
編集5:最適化レベルのビルド設定:
編集4:ビルド構成を変更して、すべてを「デバッグ」にしてから「テスト」のために実行しようとしました。奇妙なことに、約20回はクラッシュしませんでした(さまざまなアセットを使用してさまざまなGameScenesのロードとアンロードを続けました)。21回目(統計的に関連性がなくても)、もうクラッシュしないかもしれないと思っていましたが、クラッシュしました。要約はまだ利用できないので、私はそれを正しく行っているのか、それとも他の問題があるのか疑問に思っています。ビルド構成とクラッシュレポートは次のとおりです。
編集3:重要なことに、このバグは6/7回に1回の実行など、ごく一部しか発生しないため、特定するのは困難です。
どのテクスチャがこのNSAssertを失敗させているのかを理解するのに深刻な問題があります。私はいくつかのアプローチを試しましたが、どれもうまくいきませんでした(またはおそらく私だけが少し愚かすぎます:))。
デバッガーでは、GLuint情報を確認できます。インターネットで読んだところ、それがフレーム(一種のポインター)を参照する方法であることがわかりました。
batchNode plistファイルからフレーム名を取得する方法があるはずだと思い、このGLuint番号がplistファイル内のフレームの順序に何らかの形で対応できるかどうか疑問に思いました。
私はそれらのアプローチを試しましたが、それらはすべてのケースを捕らえます:
編集:私はちょっとクレイジーだと知っていますが、正しく初期化できないように見えるので、CCTexture2DでfileNameを初期化する試みを貼り付けます:
上記のものは、私が変更できた唯一のinitWithStringです。この他の1つのfileNameプロパティを変更することはできません:
編集2:fileNameを次のように割り当てようとしました:
しかし、ここで報告されているように、それでも要約は利用できません。
問題はアニメーションの更新中にsetTextureで発生するようですが、fileNameは元々間違っているようです。
これが、CCTexture2Dでプロパティを宣言した方法です。
ios - cocos2d で CCSpriteBatchNode を使用してスプライトのストリームを追加しますか?
そこで、CCSpriteBatchNode を拡張する Berries というクラスを作成しました。ベリーは基本的に私のゲームのコインのようなもので、「衝突」するとスコア値が加算されます。これは、CCSpriteBatchNode の Berries クラスにあるコードです。
numBerries は私が作った int です。3 つすべての CCSpriteBatchNode のベリーの数を把握しようとしています。これにより、detectCollision メソッドを作成するときに for ループで使用できるようになります。
何か案は?
cocos2d-iphone - 子から親の CCSpriteBatchNode にスプライトを追加するときにのみ Cocos2D 更新が起動するのはなぜですか
なぜ次のことが起こっているのか理解できません。誰かがここで説明してくれることを願っています。
GameLayer (CCLayer) クラスと Food (CCNode) クラスがあります。
Gamelayer クラスでは、プロパティとしてスプライトを持つ一連の食品オブジェクトを作成します。そして、これらのスプライトを CCSpriteBatchNode に追加したいと考えています。
上記のコードを使用すると、スプライトはすべて画面に表示されますが、移動しません。(フード クラスの更新をスケジュールし (以下を参照)、この更新では食品オブジェクトの位置が変更されているため、そうする必要があります)
しかし、バッチにスプライトを追加するコードを Game クラスから food クラスに移動すると、位置を変更する更新が機能し、食品が画面上で移動します。しかし、なぜ?
したがって、これは次のようになります。
私は本当に呼び出しの違いを見ることができません
食品クラスまたは :
「親」GameLayer から
xcode - タグ値で既存の CCSprite にアニメーションを追加
キャラクターのアニメーションを作成しました..このアニメーションをタグ値で既存のキャラクターに追加するのに助けが必要です..ネットでチェックする限り..すべてがこのアニメーションを作成するために新しく作成しています..しかし、私はCCSprite
このアニメーションを追加する必要があります.既存のスプライトに..既存のスプライトのタグ値は 20 です..新しい作成中にうまくアニメーション化さCCSprite
れます..事前に感謝します..
cocos2d-iphone - Cocos2d-x: 100 個の同じスプライトからメモリを最適化する方法は?
私の仕事は、1 つのスプライトをフレーム内に 100 回描画することです。たとえば、1 つのスプライト「sprite.png」で構成される行を描画する必要があります。私はこのようにします:
そして、それが問題です。1つのスプライトだけに100回メモリを割り当てますが、別の方法がわかりません。どうすれば最適化できますか?Cocos2d で座標 (x と y) を使用してスプライトを描画する方法はありますが、同じスプライトごとにメモリを割り当てる方法はありませんか?
cocos2d-iphone - シェーダーを適用する CCSpriteBatchNode?
cocos2d 2.0 を使用して BatchNode にシェーダーを適用しています。
新しいユニフォームを保持するように ccV3F_C4B_T2F 構造体を更新したので、次のようになりました。
typedef構造体_ccV3F_C4B_T2F {
} ccV3F_C4B_T2F;
CCspritebatchnode の plist に新しいプロパティ値を追加しました。これは、シェーダーに渡したい値です。したがって、バッチノードが各フレームのオフセット、カラー長方形などを取得するとき。また、通過する必要がある値も取得します。それは働いた。
次に、Batchnodes plist から値を取得し、「updatetransform」を変更して値を受け取りました。したがって、次のようになります。
CCSpriteBatchNode をサブクラス化し、シェーダーを適用しました。
頂点シェーダー:
フラグメント シェーダー:
頂点シェーダーは「属性 vec2 a_newcoords;」を取得します。正しいですが、フラグメントシェーダーから「v_newcoords の可変」にアクセスできません。
誰かが私が間違っているかもしれないことを知っていますか??
ios - CCSpriteBatchNode は約 15k で子の追加を停止します
CCSpriteBatchNode を使用して、基本的に一度に 1 ピクセルずつ (1x1 スウォッチを使用して) 線を描画しています。ユーザーが線の行き先をリアルタイムで制御しているため、これを行う必要があります (描画アプリではありませんが、私が行っていることは同等だと思います)。
15 ~ 16k の子を batchNode に追加すると、新しい子の登録が停止することがわかりました。基本的に、ペンのインクがなくなったようです。
私は cocos2d コードを少しいじりましたが、何か問題があるようには見えません。新しい子ノードの登録を停止するだけです。これがなぜなのか誰か知っていますか?