使用Godot自动图块放置多个图块,其中一个是随机的,另一个由自动图块方案确定

问题描述 投票:0回答:1

我正在使用Godot autotiles来创建关卡,我希望能够将草放置在其他草的顶部(就像Minecraft如何有一个草块,然后在草的顶部有诸如花和草之类的东西)。我已经有了完整的地形集以及草和草变体(例如花),我只需要知道如何实现“如果面向外面的草砖,则在顶部添加额外的草植物”的规则集。我还计划使用任何给我的方法来给树添加叶子,或者在石头上添加岩石碎片,我只是以草为例。如果可能的话,有多个层也很好,但我不知道这是否可能。

我尝试过手动放置额外的草,但是这个解决方案即使是单个级别也需要很长时间才能执行,因为草是多方向的(斜坡有自己的草精灵,侧面的东西有自己的草等)。

模式看起来很有希望,但是我找不到任何有关如何在自动平铺中使用它们的文档(也许我在这里遗漏了一些东西?)

我还研究了一些自动平铺/地形插件,但似乎没有一个记录这种行为。

我还研究了通过扩展内置的 tilemap 节点来编写我自己的插件或程序自动图块规则集。然而,当我正在制作游戏果酱时,如果已经有内置的方法可以做到这一点,我不想浪费大量时间来做这件事。

godot terrain tilesets
1个回答
0
投票

TileMap
系统在Godot 4中有很多变化,并且文档还没有缓存。

是的,您可以在检查器中的

TileMap
中进行图层。但是您无法制定跨越多个图层的自动平铺规则。不,模式不会自动平铺。


自动平铺可能具有随机性。这可能足以实现您的目标。是这样的:

  • 您可以在检查器中的
    TileSet
    中定义多个地形。 每个地形都有一种颜色,这只是为了帮助识别它们。
  • 然后您可以在瓷砖顶部绘制地形。为此,请转到 TileSet 面板(位于底部,不要将其与 TileMap 面板混淆),选择 Paint 选项卡,然后选择 Terrain(如果在更改地形时选择了它,则需要选择其他内容)并再次选择它以强制更新)。然后你可以用不同的地形绘制每个图块的边角和中心。这就是 Godot 将用于自动平铺的工具。
  • 然后您可以进入 TileMap 面板在您的
    TileMap
    中进行绘制。选择“地形”选项卡,选择一个地形并对其进行绘制。现在,由于 Godot 使用您在 TileSet 上绘制这些地形的方式,因此给定位置可能有多个有效的图块(例如,您以相同的方式绘制了多个图块)。在这种情况下,戈多会随机选择。
  • Godot 使用概率属性来实现随机性。您可以在 TileSet 面板中进行设置,再次在 Pain 选项卡中进行设置,但这次选择 Probability 而不是 Terrain...Probability 恰好是一个用词不当,它是一个权重(值越高,可能性越大,越低)值的可能性较小,但它们的总和不必等于 1)。

有了它,你就可以拥有在绘制时具有随机图块的自动图块。所以你可以有一个草块,一个有花的草块,然后让戈多随机挑选。


现在,如果您需要对多个图层执行此操作,请尝试使用分散工具。

在 TileMap 面板的 Tiles 选项卡中,会有一个看起来像骰子的工具,带有工具提示“放置随机图块”,这将随机放置您选择的图块(包括没有图块的机会,由散射控制)选择该工具时出现的值)。

例如,您可以使用它在第一层上绘制草,然后在第二层上随机绘制花朵。


我想你可以制作一个脚本来迭代

TileMap
的其中一层并随机填充第二层。

set_cell
方法可以获取
layer
、位置以及要放置的内容的 id。所以你需要从地形到可能的地点的 ID 的映射。

要读取图块的地形,您需要使用

get_cell_tile_data
,它为您提供一个具有
TileData
属性的
terrain
对象。

© www.soinside.com 2019 - 2024. All rights reserved.