Godot 4 - 如何在瓦片地图中拥有具有不同可点击区域的瓦片?

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

我正在尝试使用 Godot 进行游戏编程,并正在开发一个等距 2D 游戏。我正在尝试添加坡道和高程,但遇到了问题。海拔工作正常,但坡道的可点击区域工作得很奇怪。如果我将鼠标坐标直接转换为网格坐标,则只有这张图片中的橙色菱形区域是可点击的。这对于立方体瓷砖效果很好,但不适用于坡道。

因此,我希望有一个不同的可点击区域供玩家选择坡道图块。

我有一些可能可行的想法,但我不确定如何使用 godot 的系统来实现它们。

  1. 我可以在包含斜坡的图块附近添加自定义输入检查。这很乏味并且需要对每个单独的图块进行调整。虽然我相信它会起作用,但它会使设计变得更加乏味,特别是当我计划添加不同的图块集时,这些图块集可能具有稍微不同的坡道形状。

  2. 我可以在用户单击的每一层查找不透明像素。这可行,但我不确定 Godot 的tileMap 类中是否存在允许这样做的命令。 文档没有帮助,但我承认我可能错过了一些东西。

  3. 如果 Godot 允许tileSet对象中的某个图块有一个自定义区域,那也可以工作,但这似乎不太符合这些类的设置方式。

我也不是特别喜欢戈多,所以如果有人看到这个并且有更好的游戏引擎,他们想建议这样做,我会听。

godot gdscript tile godot4
1个回答
0
投票

实现此目的的一种方法是为 TileSet 定义一个

Physics Layer
。这允许您定义 TileSet 将与哪些物理层交互,并允许定义 Tiles 的自定义形状。

作为示例,您的 TileSet 资源可能如下所示:

TileSetPhysicsLayers

然后,您可以为坡道图块或任何其他具有独特形状的图块绘制自定义物理碰撞箱。

TilePhysicsLayerPaint

通过使用此方法,您的鼠标交互脚本可以检查以确定鼠标单击是否击中了其命中框中的图块,并使用它来确定图块的可单击区域。所有非坡道图块也可以使用相同的碰撞盒形状,因此您只需为需要它们的图块定义自定义形状即可!

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