
Cechy SubViewportContainer:
- Automatyczne zarządzanie teksturą
SubViewport:SubViewportContainerautomatycznie pobiera teksturę zSubViewporti wyświetla ją na ekranie, co upraszcza proces używaniaSubViewport. - Dostosowanie rozmiaru i skalowania: Możesz łatwo kontrolować, jak
SubViewportjest skalowany i wyświetlany w interfejsie użytkownika lub jako element sceny. - Integracja z UI: Dzięki obsłudze przez
Control,SubViewportContainermoże być używany jako część interfejsu użytkownika (np. mini-mapka, podgląd kamery, okno podglądu postaci).
SubViewportContainer w Godot 4 to węzeł, który służy do wyświetlania zawartości SubViewport na ekranie. Jest specjalnie zaprojektowany, aby automatycznie wyświetlać to, co jest renderowane przez SubViewport, jako element interfejsu użytkownika (UI) lub w innych częściach gry. Działa jak kontener, który „trzyma” SubViewport, dzięki czemu można łatwo renderować jego zawartość bez potrzeby ręcznego konfigurowania tekstur.
Jak używać SubViewportContainer w Godot 4:
1. Dodanie SubViewport i SubViewportContainer do sceny
- W drzewie scen kliknij „Dodaj węzeł”.
- Dodaj
SubViewportContainerdo swojej sceny. - Dodaj
SubViewportjako dzieckoSubViewportContainer. - Umieść elementy 2D lub 3D w
SubViewport, aby zobaczyć, jak są renderowane wSubViewportContainer.
Przykład struktury sceny:
MainScene
└── SubViewportContainer
└── SubViewport
├── Camera3D (dla sceny 3D)
└── Sprite2D (dla sceny 2D)
W tej strukturze SubViewportContainer będzie wyświetlał wszystko, co jest renderowane w SubViewport. Możesz kontrolować rozmiar i pozycję SubViewportContainer, aby dostosować wyświetlanie zawartości.
2. Konfigurowanie SubViewport w inspektorze
- Ustaw
Size(Rozmiar): Możesz ustawić rozmiarSubViewport, aby określić, jak duży będzie renderowany obszar. - Wybierz
Usage(Zastosowanie): Możesz ustawić, czySubViewportrenderuje scenę2Dczy3D. Transparent Background(Przezroczyste Tło): Umożliwia renderowanie z przezroczystym tłem, co może być przydatne w przypadku nakładania zawartości na inne elementy UI.
3. Przykład skryptu do dynamicznego tworzenia SubViewportContainer
Tworzenie dynamicznego podglądu:
extends Control
func _ready():
# Tworzenie SubViewport
var sub_viewport = SubViewport.new()
sub_viewport.size = Vector2(400, 300)
sub_viewport.usage = SubViewport.USAGE_3D
add_child(sub_viewport)
# Dodanie kamery do SubViewport
var camera = Camera3D.new()
camera.global_transform.origin = Vector3(0, 0, 5)
sub_viewport.add_child(camera)
# Tworzenie SubViewportContainer i przypisanie do niego SubViewport
var container = SubViewportContainer.new()
container.size_flags_horizontal = Control.SIZE_EXPAND_FILL
container.size_flags_vertical = Control.SIZE_EXPAND_FILL
container.add_child(sub_viewport)
add_child(container)
Co robi ten skrypt:
- Tworzy
SubViewport, ustawia jego rozmiar i typ renderowania. - Dodaje kamerę 3D do
SubViewport, aby wyświetlić scenę 3D. - Tworzy
SubViewportContaineri umieszcza w nimSubViewport, aby automatycznie renderować jego zawartość na ekranie.
4. Typowe zastosowania SubViewportContainer
- Mini-mapki i podglądy:
- Użyj
SubViewportContainer, aby wyświetlić podgląd mapy, która jest renderowana przez osobną kamerę wSubViewport. Możesz łatwo umieścić mini-mapę w rogu ekranu, aby pokazać, gdzie znajduje się gracz w świecie gry.
- Ekrany i monitory w grze:
SubViewportContainerświetnie sprawdza się do wyświetlania treści, takich jak monitory komputerów, ekrany kontrolne lub telewizory w świecie gry. Możesz renderować osobną scenę wSubViewporti wyświetlać ją jako teksturę na powierzchni obiektu 3D.
- Podgląd postaci:
- Tworzenie podglądu postaci (np. w menu ekwipunku), gdzie
SubViewportrenderuje osobną scenę z modelem postaci, aSubViewportContainerwyświetla ją na UI.
- Interaktywne UI w przestrzeni 3D:
SubViewportmoże być używany do renderowania interfejsu użytkownika jako osobnej sceny 2D, a następnie używaniaSubViewportContainerdo wyświetlania tego interfejsu jako elementu interaktywnego w przestrzeni 3D.
5. Skalowanie i dostosowywanie SubViewportContainer
Stretch(Rozciąganie): Możesz ustawić, jakSubViewportContainerma skalować swoją zawartość. Dostępne opcje to:Keep: Zachowuje oryginalny rozmiarSubViewport.Keep Aspect: Zachowuje proporcjeSubViewportpodczas skalowania.Expand: RozciągaSubViewport, aby dopasować się do rozmiaru kontenera.- Używanie
MarginsiAnchors: Możesz używaćAnchorsiMargins, aby precyzyjnie umiejscowićSubViewportContainerw ramach UI.
Przykład: Tworzenie lustra w grze
extends Node3D
func _ready():
# Tworzenie SubViewport do renderowania lustrzanego widoku
var sub_viewport = SubViewport.new()
sub_viewport.size = Vector2(256, 256)
sub_viewport.usage = SubViewport.USAGE_3D
add_child(sub_viewport)
# Dodanie kamery 3D do SubViewport
var camera = Camera3D.new()
camera.global_transform.origin = Vector3(0, 0, -5)
camera.look_at(Vector3.ZERO)
sub_viewport.add_child(camera)
# Wyświetlenie SubViewport jako tekstura na powierzchni lustra
var mirror_material = StandardMaterial3D.new()
mirror_material.albedo_texture = sub_viewport.get_texture()
var plane = MeshInstance3D.new()
plane.mesh = PlaneMesh.new()
plane.set_surface_override_material(0, mirror_material)
add_child(plane)
Podsumowanie:
SubViewportContainer w Godot 4 jest specjalnym węzłem, który umożliwia wyświetlanie zawartości SubViewport na ekranie w prosty i efektywny sposób. Pozwala na łatwe zarządzanie renderowaniem podglądów, mini-map, luster, interaktywnych UI, a także na używanie SubViewport jako tekstury w świecie gry 3D. Dzięki integracji z UI możesz tworzyć bardziej dynamiczne i interaktywne elementy wizualne w grach.





Dodaj komentarz