私は独自のタイル ブリッティング エンジンに取り組んでいます。これは六角形のタイルを使用していますが、通常のタイルとあまり変わらないと思います。
タイルの巨大な x、y 配列があり、キャンバスにレンダリングするための x、y 座標があります。現在のカメラ位置でキャンバスに表示されるはずのものだけを繰り返します。
だから私はスケーリングに行き詰まっており、これを自分で解決することはできません。キャンバスにタイルを描画するための私のコードは次のとおりです。
public function draw():Void{
clearCanvas(); //Clear canvas (bitmapData)
var _m:Matrix;
iterateTiles(function(_tile:HexTile):Void{ // loop every tile that is visible on screen
_m = new Matrix();
_m.translate(_tile.x + cameraPoint.x,_tile.y + cameraPoint.y);//Get pre calculated tile x,y and add camera x,y
_m.scale(matrixScale, matrixScale);
drawToCanvas(_tile,_m);//Send to draw tile on canvas using Matrix
},true);
}
これはうまく機能しますが、唯一の問題は、左上隅からタイルをスケーリングすることです(通常のスケーリングが機能するように)
私の質問は、常に中心から拡大縮小するようにタイルを変換する方法です。したがって、スケーリング前にタイル 10:10 が画面の中央にある場合、スケーリング後もそこにとどまります。