You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot 3D单场景双相机分屏实现问题

Godot同场景双相机分屏实现方案

你可以通过给两个相机指定独立的Viewport来实现单场景分屏,不需要拆分机身和炮塔,具体步骤如下:

1. 保持你的Player场景结构

维持你想要的单场景设计,不用拆分:

Player (Spatial)
    Body (Spatial)
        Camera1 (Camera)
    Turret (Spatial)
        Camera2 (Camera)

2. 搭建主场景分屏容器

主场景用全屏Control作为根节点,添加两个Viewport容器和你的Player实例:

Control (锚点设为(0,0,1,1),占满全屏)
    ViewportContainer (左分屏:锚点(0,0,0.5,1),宽度占一半)
        Viewport1 (Viewport)
    ViewportContainer (右分屏:锚点(0.5,0,0.5,1),宽度占一半)
        Viewport2 (Viewport)
    Player (你的Player场景实例,放在Control下即可)

3. 绑定相机到对应Viewport

  • 选中Camera1,在检查器里找到Viewport属性,选择Viewport1;
  • 选中Camera2,在检查器里找到Viewport属性,选择Viewport2;
  • 记得把两个相机的Current属性都关闭(默认开启的话会渲染到主窗口,关闭后仅渲染到指定Viewport)

4. 适配Viewport显示

  • 给每个Viewport开启Stretch选项,把Stretch Mode设为Expand或Keep,确保画面适配容器大小;
  • 确认Viewport的Render Target > Render Target Mode为2D Texture(默认值,确保能渲染到容器中)

可选:代码动态绑定(如果Player是动态加载)

如果Player是通过代码实例化的,可在主场景脚本中完成绑定:

onready var viewport1 = $ViewportContainer/Viewport1
onready var viewport2 = $ViewportContainer2/Viewport2
onready var player = $Player

func _ready():
    player.$Body/Camera1.viewport = viewport1
    player.$Turret/Camera2.viewport = viewport2
    # 强制关闭相机的Current属性,避免冲突
    player.$Body/Camera1.current = false
    player.$Turret/Camera2.current = false

这样就能实现同一个Player场景下的双相机分屏效果,完全符合你的单场景需求。

内容的提问来源于stack exchange,提问作者user2635469

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:02:21