在 Godot 中,当节点不在父节点的正上方时,您可以隐藏节点吗?
Can you hide a node when not directly above a parent in Godot?
所以我有一个实例化场景,它应该是我的树中颜色矩形的子级。我想随机生成节点,但如果纹理不再位于主要部分上方,我也希望切断部分视图。我知道您可以在其父级下方渲染节点,但我不知道是否可以停止渲染其中的一部分。
In this image I want the bottom circle to remain the same, but the top circle to not show anything above the dark purple box
This is the node tree in the editor
有什么方法可以直接执行此操作,还是我必须使用各种视口?
我相信您想要的是在 ColorRect
(或任何 Control
)上将 rect_clip_content
设置为 true
。使其子项的任何部分在其外部不可见。
来自 Godot 的文档:
bool rect_clip_content
Enables whether rendering of CanvasItem based children should be clipped to this control's rectangle. If true, parts of a child which would be visibly outside of this control's rectangle will not be rendered.
如果你想要的是相反的,也许你可以使用 z_index
在顶部渲染一些东西,遮挡你不想看到的部分。
还有一个技巧可以用于灯光(包括 2D 灯光):
- 制作与您希望事物可见的区域相匹配的灯光。
- 设置自定义 material 默认情况下是透明的,但在光通道上可见。更简单的方法是将 material 的
light_mode
设置为“Light Only”。 您也可以改用自定义着色器。
在 2D 中用光使某物消失是不可能的。 在 3D 中,您可以使用 flags_use_shadow_to_opacity
。这就是你制作影子捕手的方法。
但是,还有一个技巧:你可以使用面具。这应该让您完全控制何时显示或隐藏内容。因此,如果上述解决方案中的 none 适合您,请使用遮罩。我在 a different answer. See also: How to crop sprite in a non-rectangular form?.
中有解释
Mighty Mochi Games 最近 (2022-03-30) 以视频形式整理了不同的方法: Mask Methods Collection - Godot 3.x - 2D
.
所以我有一个实例化场景,它应该是我的树中颜色矩形的子级。我想随机生成节点,但如果纹理不再位于主要部分上方,我也希望切断部分视图。我知道您可以在其父级下方渲染节点,但我不知道是否可以停止渲染其中的一部分。
In this image I want the bottom circle to remain the same, but the top circle to not show anything above the dark purple box
This is the node tree in the editor
有什么方法可以直接执行此操作,还是我必须使用各种视口?
我相信您想要的是在 ColorRect
(或任何 Control
)上将 rect_clip_content
设置为 true
。使其子项的任何部分在其外部不可见。
来自 Godot 的文档:
bool rect_clip_content
Enables whether rendering of CanvasItem based children should be clipped to this control's rectangle. If true, parts of a child which would be visibly outside of this control's rectangle will not be rendered.
如果你想要的是相反的,也许你可以使用 z_index
在顶部渲染一些东西,遮挡你不想看到的部分。
还有一个技巧可以用于灯光(包括 2D 灯光):
- 制作与您希望事物可见的区域相匹配的灯光。
- 设置自定义 material 默认情况下是透明的,但在光通道上可见。更简单的方法是将 material 的
light_mode
设置为“Light Only”。 您也可以改用自定义着色器。
在 2D 中用光使某物消失是不可能的。 在 3D 中,您可以使用 flags_use_shadow_to_opacity
。这就是你制作影子捕手的方法。
但是,还有一个技巧:你可以使用面具。这应该让您完全控制何时显示或隐藏内容。因此,如果上述解决方案中的 none 适合您,请使用遮罩。我在 a different answer. See also: How to crop sprite in a non-rectangular form?.
中有解释Mighty Mochi Games 最近 (2022-03-30) 以视频形式整理了不同的方法: Mask Methods Collection - Godot 3.x - 2D .