「RPGのようなマップを作りたい時」の編集履歴(バックアップ)一覧に戻る

RPGのようなマップを作りたい時 - (2011/09/19 (月) 01:20:02) の編集履歴(バックアップ)


タイル用の画像を描く

ここではフリーで使えるGimp(http://www.gimp.org/downloads/)を用いるが何でも良い。   

タイルを一枚のシートにまとめる。

ここではTexturePacker(http://www.texturepacker.com/ )を用いるが何でも良い。  

マップを作成する。

マップエディタとしてTiled Map Editorをインストールする http://www.mapeditor.org/   注 作ったデータはbase64,gzip等で保存する事。  

作ったファイルはXCodeに放り込む

データを作る際に用いた画像データ(さきほど作った一枚にまとめたシート)も放り込む。  

マップを読み込む

 CCTMXTiledMap *tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"map.tmx"];

で読み込める。   注 読み込まれないときは、tmxファイルの中の画像の場所の指定(<image source="simpleSheet.png" width="32" height="64"/> )が間違っている可能性がある。  

画面に表示させる

[self addChild:tileMap z:-1 tag:1]; 

すれば良い。  

タップしてスクロール

まず画面のタッチを検知する

今のレイヤーに
 - (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
    NSLog(@"poi");//処理
 }

と書く。注意 レイヤーのisTouchEnabledをYESにしておかないと反応しない。

タッチした座標を取得する。

touchbeganの中身に以下を書く。

UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:[touch view]];
NSLog(@"touch %f,%f",point.x,point.y); 

 

付録

マップの画像はどこで読み込まれている?

-(id) initWithTilesetInfo:(CCTMXTilesetInfo*)tilesetInfo layerInfo:(CCTMXLayerInfo*)layerInfo mapInfo:(CCTMXMapInfo*)mapInfo