私はcocos2dでタイルベースの2d RPGを作っています。私は自分のマップにCCTMXTileMapsを使用しています。私のプレイヤーは画面の中央に配置され、地図はその周りを移動します(プレイヤーが地図の端に向かって歩いているとき、中心から離れて実際に移動している場合を除く)。このシステムは大きな地図でうまく機能します。ただし、小さなマップでは、マップは画面の右上に固定されます。メカニックはまだ動作しますが、自動的に小さなマップを自動的に中央に置くことはいいでしょう。小さなCCTMXTileMapをcocos2dの中央に配置するにはどうすればよいですか?
画面のサイズよりも小さいマップを中央に配置するにはどうすればよいですか?私はマップを "赤いボックス"の中央にしたい。 (赤いボックスは、例示目的のためだけにここにある、それはコードでは、実際に存在しません。)
EDIT:
は、だから私は理論的にはそれを行う方法を考え出したが、私は」座標系の理解に問題があります。次のコードを使用して地図を中央に配置していますが、期待どおりに動作していません。地図が画面から読み込まれます。
if ((self.tileMap.contentSize.height < screenSize.height) && (self.tileMap.contentSize.width < screenSize.width)) {
CGSize winSize = [[CCDirector sharedDirector] winSize];
CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2);
CGPoint centerOfMap = CGPointMake((self.tileMap.mapSize.width*self.tileMap.tileSize.width)/2, (self.tileMap.mapSize.height*self.tileMap.tileSize.height)/2);
self.tileMap.anchorPoint = centerOfMap;
self.tileMap.position = centerOfView;
}
私はここで間違っていますか?
「何かを壊す」と定義すると、クラッシュしたり、必要に応じて動作しませんか? –
@FraserGraham Edited。それは実行されますが、私が望むように動作しません。 – Moshe