cococococos 2 d学習ノート(六)CCParalaxNodeとTile Map
もしあなたのゲームにもっと大きなシーンが必要なら、必ずCCParalaxNodeまたはtile mapを使います.
私達は知っていて、私達が移動する時、私達は私達の近い物体まで見ることができて、移動することができるのはもっと速くて、遠い物体、たとえば遠い山は移動するのがとても遅くて、最も遠い物体、たとえば太陽はほとんど動かないで、この現象は視差と言って、ゲームの中で視覚差をまねて、プレーヤーにゲームの中の役が確かに移動していることを感じさせることができます.CCParalaxNodeは、各層の視差率、位置、階層の高低を制御することができます.
そうだ、小さなtipがあります.
次にtile mapについて話します.ソフトウェアのダウンロード住所:http://www.mapeditor.orgソフトウェアの使い方はもちろん、簡単です.最終的に生成されます.tmxファイルは、実はこのファイルはxmlファイルです.
オブジェクトの作成方法
CCTMXTiledMap *tiledMapWithTMXFile:@「Level 2 TileMapiPhone.tmx」
tile mapの利点は、あなたの地図がどれだけ大きいかに関わらず、メモリ占有率はそれぞれ異なるtileの総和だけですので、tile mapを使うのは非常にメモリを省くやり方です.rpgゲームの地図は一般的にはtile mapを使います.
ok、これらです.次のブログから物理エンジンbox 2 dを書き始めます.
私達は知っていて、私達が移動する時、私達は私達の近い物体まで見ることができて、移動することができるのはもっと速くて、遠い物体、たとえば遠い山は移動するのがとても遅くて、最も遠い物体、たとえば太陽はほとんど動かないで、この現象は視差と言って、ゲームの中で視覚差をまねて、プレーヤーにゲームの中の役が確かに移動していることを感じさせることができます.CCParalaxNodeは、各層の視差率、位置、階層の高低を制御することができます.
parallaxNode = [CCParallaxNode node]; [parallaxNode
setPosition:ccp(levelSize.width/2.0f,screenSize.height/2.0f)]; float xOffset = 0;
// Ground moves at ratio 1,1
[parallaxNode addChild:BGLayer1 z:40 parallaxRatio:ccp(1.0f,1.0f) positionOffset:ccp(0.0f,0.0f)];
xOffset = (levelSize.width/2) * 0.3f; [parallaxNode addChild:BGLayer2 z:20 parallaxRatio:ccp(0.2f,1.0f)
positionOffset:ccp(xOffset, 0)];
xOffset = (levelSize.width/2) * 0.8f; [parallaxNode addChild:BGLayer3 z:30 parallaxRatio:ccp(0.7f,1.0f)
positionOffset:ccp(xOffset, 0)]; [self addChild:parallaxNode z:10];
z軸が40の視察率が最大で、20の最小、つまり、一番遠い層は移動時に現在の層x軸移動速度の0.2倍しかなく、y軸速度が1なのはこのコードがx軸上でのみ視差表現されているからです.そうだ、小さなtipがあります.
id followAction = [CCFollow actionWithTarget:playerCharacter];
[layer runAction:followAction];
CCFollowはあなたのレンズをフォローしてくれますが、このレンズのフォローはx軸とy軸を含みます.次にtile mapについて話します.ソフトウェアのダウンロード住所:http://www.mapeditor.orgソフトウェアの使い方はもちろん、簡単です.最終的に生成されます.tmxファイルは、実はこのファイルはxmlファイルです.
オブジェクトの作成方法
CCTMXTiledMap *tiledMapWithTMXFile:@「Level 2 TileMapiPhone.tmx」
tile mapの利点は、あなたの地図がどれだけ大きいかに関わらず、メモリ占有率はそれぞれ異なるtileの総和だけですので、tile mapを使うのは非常にメモリを省くやり方です.rpgゲームの地図は一般的にはtile mapを使います.
CCTMXLayer *groundLayer = [tileMapNode
layerNamed:@"RockBoulderLayer"];
// 2
parallaxNode = [CCParallaxNode node];
[parallaxNode setPosition:
ccp(levelSize.width/2,screenSize.height/2)];
float xOffset = 0.0f;
// 3
xOffset = (levelSize.width/2);
[groundLayer retain];
[groundLayer removeFromParentAndCleanup:NO];
[groundLayer setAnchorPoint:CGPointMake(0.5f, 0.5f)];
[parallaxNode addChild:groundLayer z:30 parallaxRatio:ccp(1,1)
positionOffset:ccp(0,0)];
[groundLayer release];
このようなコードは、tile mapに複数の層がある場合、これらの層を他のオブジェクトに加える際には必ずretainし、tileMapNodeからremoveし、その後に操作を加えて、releaseを忘れないようにしてください.このように彼の現在の所有者にライフサイクルをコントロールさせます.ok、これらです.次のブログから物理エンジンbox 2 dを書き始めます.