一般的なヒントとコツ

レイヤーのタッチイベントを有効にする

レイヤーのisTouchEnabledはレイヤーに追加される前に設定しなければなりません。
それ以外の場合では、レイヤーはタッチイベントを受け取りません。

テクスチャアルファに問題が発生した

問題の解決方法

ディレクターのピクセルフォーマットを次のように設定してください。

 
[[Director sharedDirector] setPixelFormat:kRGBA8];
 

デプスバッファを次のように追加してください。

 
[[Director sharedDirector] setDepthBufferFormat:kDepthBuffer16];
 

連続した(永遠に終わらない)リピートアクションを生成する

 
id _action = [RepeatForever actionWithAction: [MoveBy actionWithDuration:1.0 position:cpv(10,0)] ]
 

Hexタイルの実装

Hexタイルを追加するクイックハック(v0.6.3 / v0.7)

  • TileMapAtlas.m の updateAtlasValueAt (v0.7) または updateAltasValues (v0.6.3) を次のように追加編集してください。
     
    float offsetX = x *( itemWidth *0.5f + ((int)(itemWidth / 4.0f)));
    float offsetY =  y * itemHeight;
     
    if (x % 2)
    {
        offsetY = y * itemHeight + 0.5f * itemHeight;
    }
     
    vertex.bl_x = offsetX;                    // A - x
    vertex.bl_y = offsetY;                    // A - y
    vertex.bl_z = 0.0f;                       // A - z
    vertex.br_x = itemWidth + offsetX;        // B - x
    vertex.br_y = offsetY;                    // B - y
    vertex.br_z = 0.0f;                       // B - z
    vertex.tl_x = offsetX;                    // C - x
    vertex.tl_y = itemHeight + offsetY;       // C - y
    vertex.tl_z = 0.0f;                       // C - z
    vertex.tr_x = itemWidth + offsetX;        // D - x
    vertex.tr_y = itemHeight + offsetY;       // D - y
    vertex.tr_z = 0.0f;                       // D - z
     

プリミティブの描画

ランドスケープモードで現在の座標系を維持しながら、プリミティブを描画する方法を知っていますか?

drawメソッドの中で描画する必要があります。ディレクターのメインループを見てください。スケジュールされたメソッドが呼び出され、その後でランドスケープが適用され、描画されます。スケジュールメソッドの中で描画を行った場合、ランドスケープモードが適用される前にそれを行うことができるわけです。

ゲームが読み込まれたときのちらつきや点滅を防ぐ方法
Primatives don't account for landscape mode?

起動時のちらつき

タイルマップアトラスを使用するとき、タイルでは常にアンチエイリアスが有効になっています。そのため、アトラスを使用する前にアンチエイリアシングを無効にしない場合、各タイルの間に線が表示されます。これを避けるためには、テクスチャからアンチエイリアスを無効にする必要があります。

cocos2d (v0.8.0未満)

 
        // エイリアスのイメージ
	[Texture2D saveTexParameters];
	[Texture2D setAliasTexParameters];
	TileMapAtlas *tilemap = [TileMapAtlas tileMapAtlasWithTileFile:@"tiles.png" mapFile:@"levelmap.tga" tileWidth:16 tileHeight:16];
	[Texture2D restoreTexParameters];
 

cocos2d (v0.8.0以降)

 
        TileMapAtlas *tilemap = [TileMapAtlas tileMapAtlasWithTileFile:@"tiles.png" mapFile:@"levelmap.tga" tileWidth:16 tileHeight:16];
	// エイリアスのイメージ
        [tilemap.textureAtlas.texture setAliasTexParameters];
 

スプライトまたはイメージの反転/ミラー

-1によるスケーリングは、スプライトやイメージの反転と逆像化を引き起こします。必要なエフェクトに応じて、x軸・y軸・またはその両方に対して変換を適用できます。

 
self.scaleX = -1;
self.scaleY = -1;
 

アカウントスケールや回転、アンカーを考慮してスプライトの実際の位置を取得するには

 
CGPoint absolutePosition = [sprite convertToWorldSpace:CGPointZero];
 

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-24 (日) 17:14:26 (2526d)