在Godot4(3D)中,如何使靠近相机的物体对一个相机透明,但对另一个相机不透明?

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

我正在开发一款 2 人合作游戏。两人同在一艘船上。其中一名是飞行员,另一名负责射击船上的炮塔。问题是我想让船对炮塔来说是透明的,以避免遮挡其视线,但对飞行员来说却不想。我无法更改船的材质,因为这会使它对两个摄像机都是透明的。我将炮塔的摄像头设置为剪辑附近的物体,这使得飞船消失,并且它有助于清除炮塔的视野而不改变飞行员对飞船的视野。有什么方法可以将炮塔的视图设置为透明而不是剪切附近的物体吗?

shader godot godot4 alpha-transparency godot-shader-language
1个回答
0
投票

如果没有关于您当前实现节点结构的方式的更多信息,很难确切地说出您需要做什么才能让事情按照您希望的方式工作。但是,您可以尝试组合使用以下技术来实现您尝试创建的相机透明度机制。

1。使用图层

  • 尝试调整船舶场景的图层,以便每个摄像机都可以唯一地使用该图层。

2。使用视口

  • 尝试使用新的视口/子视口,一个用于飞行员,一个用于炮塔

3.使用着色器

  • 尝试编写一个自定义着色器,它可以根据应用着色器的相机调整船舶的 Alpha 级别。执行此操作的一个非常简单的示例着色器可能如下所示(确保将其保存为 .shader 文件并将其分配给 ShaderMaterial 节点,然后您可以将其应用于炮塔视口中船舶的 MeshInstance):
shader_type spatial;

uniform bool is_turret_camera : hint_flag;

void fragment() {
    if (is_turret_camera) {
        ALPHA = 0.5; // Just an example. Adjust as needed
    } else {
        ALPHA = 1.0;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.