首页 > 解决方案 > Phaser 3 - 将形状固定到相机视图中

问题描述

我正在尝试从代表我的级别的随机生成的矩阵中绘制一个小地图。

为此,我一个一个地绘制黑色或白色的小方块来直观地表示矩阵(我不知道这是否是使用移相器的最佳方法,实际上,我是这个框架的初学者)。

地图绘制正确,但它的位置绑定到世界而不是相机,所以当我移动它时它不再可见。

这是我用来绘制地图的代码:

generate() {
    let wallsGraphics = this._scene.add.graphics({fillStyle : {color : LabyrinthConfig.MAPS.MINI_MAP.WALLS_COLOR}});
    let pathGraphics  = this._scene.add.graphics({fillStyle : {color : LabyrinthConfig.MAPS.MINI_MAP.PATH_COLOR}});

    // Draw the map
    let y = 0;
    for (let line of this._matrix) {
        let x = 0;
        for (let cell of line) {

            let rect    = new Phaser.Geom.Rectangle();
            rect.width  = LabyrinthConfig.MAPS.MINI_MAP.CELL_WIDTH;
            rect.height = LabyrinthConfig.MAPS.MINI_MAP.CELL_HEIGHT;
            rect.x = LabyrinthConfig.MAPS.MINI_MAP.POSITION_X + x * LabyrinthConfig.MAPS.MINI_MAP.CELL_WIDTH;
            rect.y = LabyrinthConfig.MAPS.MINI_MAP.POSITION_Y + y * LabyrinthConfig.MAPS.MINI_MAP.CELL_HEIGHT;

            cell === 0 ? wallsGraphics.fillRectShape(rect) : pathGraphics.fillRectShape(rect);

            x++;
        }
        y++;
    }
}

有关如何将此地图修复到相机视图的任何帮助?

标签: phaser-framework

解决方案


将图形对象的滚动因子设置为 0。

wallsGraphics.setScrollFactor(0);
pathGraphics.setScrollFactor(0);

推荐阅读