cocos2dその3。CCSprite,CCSpriteBatchNode | アクションゲーム開発日誌[iphone]

アクションゲーム開発日誌[iphone]

iphone向けゲームの開発日誌を徒然なるままに。
ドット絵描いたりもします。開発TIPSも時々は。

※読者登録・ペタ・コメント歓迎しております。
※画像は基本開発に使いますので、著作権は手放せません。個人使用以外の使用はお控えください。

今回はスプライトの設置法色々。


前はcocos2dの0.99.3使っていて、Xcodeのバージョンが上がってもめんどくさいので
そっちのまま作業していたのですが、今日ふと1.0.0に鞍替えしようと思って色々試してみました。

昔とは変わった箇所もあって結構手こずりましたが、なんとかアニメーション作成まで完了。


というわけで忘れないうちにスプライトの設置、スプライトバッチノード、
アニメーション作成まで書いてみようと思います。



基本はシーンの上のレイヤーの上に色々貼付けていきます。


・CCSpriteの生成

 画像表示の基本。
 背景だろうがキャラクターだろうがこいつが表示してくれる。
 (文字とか線とかは専用の表示クラスがあるけど)

//実体化1 (画像ファイル名から直接生成)
CCSprite *sprite1 = [CCSprite spriteWithFile:@"Sprite.png"];

//self = Layerに貼付け
[self addChild:sprite1 z;1];
//位置設定
[sprite1 setPosition:ccp(240,240)];
[sprite1 setTextureRect:CGRectMake(0,0,100,100)];


//テクスチャ作成
CCTexture2D *texture =
[[CCTextureCache sharedTextureCache] addImage:@"Sprite.png"];


//実体化2 (テクスチャ作成後、テクスチャから生成)
 CCSprite *sprite2 = [CCSprite spriteWithTexture:texture];

[self addChild:sprite2 z:1];
[sprite2 setPosition:ccp(240,200)];

========================================================

setTextureRectですがこれは画像のここからここまでを使用するよっていう指定です。
画像ファイルのサイズが800×800だったとして、
setTextureRectでRectMake(0,0,200,200)
を指定したとすれば、
画像の左上から200×200の範囲を表示する事になります。







・CCSpriteBatchNodeの生成

  ※CCSpriteをまとめて入れておける箱のような物?
  CCSprite->CCSpriteBatchNode->Layerの順にadd出来る。

昔あったCCSpriteSheetと同じ物だとしたら、
中に入れたスプライトの描画速度が高速になる。
(正確にはまとめて描画を行うので沢山スプライトがあっても速度が遅くなりにくくなる)




//CCSpriteBatchNode生成
 CCSpriteBatchNode *bachnodetes;
bachnodetes = [CCSpriteBatchNode batchNodeWithFile:@"Sprite3.png"];

//CCSpriteBatchNode貼付け
[self addChild:bachnodetes];


for (int i=0; i<10; i++) {
CCSprite *spriteB;
spriteB = [CCSprite spriteWithTexture:[bachnodetes texture]];
//スプライトをBatchNodeに貼付け
[bachnodetes addChild:sprite];
[sprite setPosition:ccp(100+i*50,200)];
}

//BatchNodeを動かせば中のスプライトが全部動く
 [bachnodetes setPosition:ccp(50,50)];


===========================================================


今日はここで挫折。
アニメーションはまた今度。