我正在开发自己的 tile bliting 引擎,这个引擎使用的是六边形块 - 但我认为它与普通块没有太大区别。
我有巨大的 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);
}
这工作得很好而且很快,但唯一的问题是它从左上角缩放瓷砖(就像常规缩放一样)
我的问题是如何将瓷砖转换为始终从中心缩放。因此,如果 tile 10:10 在缩放之前位于屏幕中心,那么它应该在缩放之后保持在那里。