javascript - 在 Phaser 3 中使用 tilemap 时如何阻止我的 tiles 流血?

标签 javascript phaser-framework game-development

在 Phaser 3 中添加图 block map 时,图 block 之间会出现明显的渗色(或间隙)。这有时被描述为瓷砖的“闪烁”或“闪烁”。

这在平移时通常更加突出。

const map = this.make.tilemap({ key: 'some-map' })
const tiles = map.addTilesetImage('some-tileset', 'some-key')
const baseLayer = map.createStaticLayer('base', tiles, x, y)

如何阻止这种情况发生?

enter image description here

最佳答案

解决方案

解决方案是将 tileset 中的 tile 拉伸(stretch) 1px(或更多)像素。目前,Phaser 社区推荐的工具是:https://github.com/sporadic-labs/tile-extruder

工作流程

您可以一次性对“源”图像执行挤压,也可以在构建步骤中对分发的图像执行挤压。

选项 1:拉伸(stretch)源图像

如果您选择拉伸(stretch)源图像,则需要在 Tiled 中进行适当的调整。您还需要确保在编辑图像时保持间隙。

选项 2:拉伸(stretch)分布式图像

这(主观上)更简单,因为它允许您在处理 Tiled 和图像时“保持原样”,而无需在 Tiled 中进行任何更改。

在您的构建步骤中,引入一个命令(例如 npm run process-assets),该命令将挤出 tileset 图像并将它们复制到您的构建文件夹。

# package.json
{
  "scripts": {
    "process-assets": "tile-extruder --tileWidth 32 --tileHeight 32 --margin 1 --spacing 2 --input ./src/tilesets/tileset.png --output ./dist/tilesets/tileset.png"
  }
}

只需确保更新您的 tilemap 创建:

const tiles = map.addTilesetImage('some-tileset', 'some-key', 32, 32, 1, 2)

注意只有在使用 WebGL(而不是 Canvas )时才需要平铺挤压

Image from https://github.com/sporadic-labs/tile-extruder for the image 图片来自 https://github.com/sporadic-labs/tile-extruder

关于javascript - 在 Phaser 3 中使用 tilemap 时如何阻止我的 tiles 流血?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62936847/

相关文章:

javascript - Phaser - Sprite 被放置在下面而不是另一个 Sprite 之上?

java - Java 中的屏幕尺寸

javascript - 如何在我的代码编辑器应用程序中将颜色应用于保留字

javascript - jQuery 添加类 onClick

javascript - 如何选择正确的 'this' 选择器?

javascript - 无法第二次在React Js上运行示例应用程序

javascript - 重新启动状态后空引用

javascript - 如何在phaser.js中获取加载的图像属性?

javascript - Webpack 4,如何将一个模块导入另一个都是入口点的模块?

javascript - 使用 Pixi JS 为瓦片 map 创建等距投影瓦片?