📌  相关文章
📜  如何在 godot 中使事物不可见 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:38:16.012000             🧑  作者: Mango

如何在 Godot 中使物体不可见

在 Godot 中,我们可以通过多种方法使物体不可见。下面将介绍四种主要方法,分别为:

  • 直接使节点不可见
  • 使节点的材质不可见
  • 在材质中使用纹理 alpha 通道
  • 使节点不可交互
直接使节点不可见

Godot 的所有节点都有一个属性 visible,默认为 true。将该属性设为 false 可以使节点不可见。

例如,以下代码将 Sprite 节点设为不可见:

$Sprite.visible = false
使节点的材质不可见

如果我们希望某节点只是不显示其外观,但其它功能仍需保留,可以在材质上设置其 albedo(漫反射)和 specular(高光)均为黑色,即:

  • 对于 Sprite 节点,可以将其材质的颜色设为 Color(0, 0, 0, 0)
  • 对于 3D 节点,可以将其材质的 albedospecular 均设为 Color(0, 0, 0, 0)

例如,以下代码将 Sprite 节点的材质设为不可见:

$Sprite.material_albedo = Color(0, 0, 0, 0)
在材质中使用纹理 alpha 通道

如果我们希望物体在不同状态下的可见性不同,可以在材质中使用纹理的 alpha 通道控制。通过将 alpha 通道与材质的漫反射或高光混合,可以在需要时控制物体的可见性。

例如,以下代码将 Sprite 节点的材质设为根据纹理 alpha 控制可见性:

$Sprite.material_blend_mode = 1
$Sprite.material_texture = load("res://example.png")
$Sprite.material_albedo_texture = $Sprite.material_texture
$Sprite.material_blend_texture = $Sprite.material_texture
$Sprite.material_blend_color = Color(1, 1, 1, 0)

其中,将 material_blend_mode 设为 1 表示使用纹理混合;material_texture 表示使用的纹理;material_albedo_texturematerial_blend_texture 都设置为相同的纹理,以实现颜色混合;最后再将 material_blend_color 设为带有透明度值的颜色,例如 (1, 1, 1, 0) 表示纯白色不透明。

使节点不可交互

如果我们希望物体在不可见的同时也不能进行交互,可以将节点的 input_pickable 属性设为 false。这样,即使物体在场景中仍占据空间,也无法接收到输入事件。

例如,以下代码将 Sprite 节点设为不可见且不可交互:

$Sprite.visible = false
$Sprite.input_pickable = false

以上是四种在 Godot 中使物体不可见的方法,使用时应根据具体需求选择。