2011-02-04 9 views
0

タイルマップを反復処理して各タイルをチェックするにはどうすればよいですか?タイルマップをスキャンして各タイルのプロパティを確認する

正しい方法がありますか?cocos2dでタイルをチェックする機能が組み込まれていますか?

タイルを作成するときに設定されたタイルサイズを取り、forループをネストし、最初のタイルの中央に(x、y)をとり、内側ループのxにタイルサイズを加えて反復するだけで、外側のyにタイルサイズするループ?

パフォーマンスを認識したアプローチが組み込まれているのだろうかと思います。

おかげ

答えて

-2

はゲームのために、のような衝突検出のためか、単にタイルの種類に基づいてレンダリングするために、このですか?

あなたの質問は本当にあいまいです。あなたが望むものを特定してください。あなたが必要としていることを説明すれば、特に3番目の文がより意味をなさないでしょう。

が、私は一人でタイトルに基づいて回答してみましょう....タイルセットは

  • どのくらいいるのですか?それほど大きくなければ、ブルートフォースは完全にうまくいくかもしれません。
  • パフォーマンスが問題である場合、またはタイルセットが大きく、特定の時間にすべてのタイルが画面内に描画されない場合は、何らかのシーン管理を行う必要があります。

シーン管理: 私はこのための技術的な用語/句があると思いますが、基本的にはタイルセット(すなわちマトリックス)上のいくつかのx、yののPTに基づいて、あなたはあなたをどのタイル(機能によって)を決定することができますthruを繰り返す必要があります。それはおそらく2次元アレイのようにそれを把握することは楽しいはずです。

+0

を推測する色 を取得し、配列に格納します。タイルセットは約320x2040(タイルサイズは20x20)です。だからそれは大したことではない。あなたは、どのように反復し、タイルのプロパティを(反復で組み込みの関数呼び出しを使用して)何を反復するかについては私の質問に答えたことはありません。 :)それぞれのタイルのプロパティをチェックするために何らかのcocos2d関数があるかどうか、または自分でコードを書くべきかどうかを知りたいと思います。 – jarryd

+0

Typemiss?それは320x240ではありませんか? – Constantin

+0

私はあなたの状況を理解していないと思います。どうしてココアはあなたのタイルについて何か知っていましたか?あなたが推測しているのは、よく知られていない標準的なココア関連の「タイル」です。 – AlvinfromDiaspar

1

私はあなたがforループとCGPointsを使ってそれを行うことができると思います。私は例のために行くよ は、私はこのゲームのためにある

CGPoint myPt; 
NSMutableArray *tilesofGray; 

for (int x = 0; x < tilemapLength) 
    { 

     for (int y = 0; y < tilemapHeight) 
      { 
       myPt.x = x; 
       myPt.y = y; 

       if([[[tilemap layerNamed:@"background"] tileAt:myPt] getColor] == Grey) 
       { 
        [tilesofGray addObject:[[tilemap layerNamed:@"background] tileAt:myPt]]; 
       } 
      } 
    } 
関連する問題