Fly around

This commit is contained in:
Vojtěch Struhár 2025-06-18 22:37:47 +02:00
parent 84f8cf5d76
commit c793535235
9 changed files with 103 additions and 49 deletions

2
.gitignore vendored
View File

@ -2,3 +2,5 @@
.godot/
/android/
.DS_Store
captures/*
!captures/.gdignore

Binary file not shown.

Binary file not shown.

0
captures/.gdignore Normal file
View File

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=71 format=3 uid="uid://clxuoprslq8em"]
[gd_scene load_steps=72 format=3 uid="uid://clxuoprslq8em"]
[ext_resource type="Script" uid="uid://4nvvgle511m4" path="res://scripts/house_big.gd" id="1_158ph"]
[ext_resource type="PackedScene" uid="uid://wsu3b5udqtdu" path="res://meshes/village/Wall_UnevenBrick_Straight.gltf" id="1_p6qno"]
@ -25,6 +25,7 @@
[ext_resource type="PackedScene" uid="uid://di0splvet24bj" path="res://meshes/village/Corner_Interior_Small.gltf" id="13_fp7uc"]
[ext_resource type="PackedScene" uid="uid://duvcn6t2vv8ld" path="res://meshes/interior/Bookcase_2.gltf" id="14_tp3c1"]
[ext_resource type="PackedScene" uid="uid://e5chiaecfb3h" path="res://meshes/interior/BookGroup_Medium_1.gltf" id="15_abcjp"]
[ext_resource type="Script" uid="uid://bfr4urrxjg8sm" path="res://addons/proton_scatter/src/cache/scatter_cache.gd" id="15_u6m7x"]
[ext_resource type="PackedScene" uid="uid://c7oppbvnch75o" path="res://meshes/interior/BookGroup_Small_2.gltf" id="16_3kjtd"]
[ext_resource type="PackedScene" uid="uid://cw2nkxh0q1rd8" path="res://meshes/interior/Book_Stack_2.gltf" id="17_ah86a"]
[ext_resource type="PackedScene" uid="uid://b0pjo7hna5kdm" path="res://meshes/village/Roof_RoundTiles_8x8.gltf" id="18_k1p6y"]
@ -59,7 +60,7 @@ albedo_color = Color(0.448364, 0.428649, 0.0977373, 1)
[sub_resource type="BoxMesh" id="BoxMesh_kpybi"]
size = Vector3(1000, 0.5, 1000)
[sub_resource type="Resource" id="Resource_4hat2"]
[sub_resource type="Resource" id="Resource_nrbqc"]
script = ExtResource("7_4hat2")
amount = 1500
enabled = true
@ -68,7 +69,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 1
[sub_resource type="Resource" id="Resource_u6m7x"]
[sub_resource type="Resource" id="Resource_1c0ay"]
script = ExtResource("8_u6m7x")
position = Vector3(0.15, 0.15, 0.15)
rotation = Vector3(20, 360, 20)
@ -79,7 +80,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 2
[sub_resource type="Resource" id="Resource_nrbqc"]
[sub_resource type="Resource" id="Resource_purgm"]
script = ExtResource("9_nrbqc")
iterations = 3
offset_step = 0.2
@ -91,7 +92,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 0
[sub_resource type="Resource" id="Resource_1c0ay"]
[sub_resource type="Resource" id="Resource_615iq"]
script = ExtResource("10_1c0ay")
ray_direction = Vector3(0, -1, 0)
ray_length = 5.0
@ -107,9 +108,9 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
[sub_resource type="Resource" id="Resource_purgm"]
[sub_resource type="Resource" id="Resource_31h7w"]
script = ExtResource("5_3bxb3")
stack = Array[ExtResource("6_53v87")]([SubResource("Resource_4hat2"), SubResource("Resource_u6m7x"), SubResource("Resource_nrbqc"), SubResource("Resource_1c0ay")])
stack = Array[ExtResource("6_53v87")]([SubResource("Resource_nrbqc"), SubResource("Resource_1c0ay"), SubResource("Resource_purgm"), SubResource("Resource_615iq")])
[sub_resource type="Resource" id="Resource_37qwj"]
script = ExtResource("13_1c0ay")
@ -126,7 +127,7 @@ script = ExtResource("12_615iq")
size = Vector3(15.4096, 1, 9.6442)
metadata/_custom_type_script = "uid://d011g8ga6gea7"
[sub_resource type="Resource" id="Resource_615iq"]
[sub_resource type="Resource" id="Resource_ob3ci"]
script = ExtResource("7_4hat2")
amount = 1200
enabled = true
@ -135,7 +136,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 1
[sub_resource type="Resource" id="Resource_31h7w"]
[sub_resource type="Resource" id="Resource_61s38"]
script = ExtResource("8_u6m7x")
position = Vector3(0.1, 0.15, 0.1)
rotation = Vector3(10, 360, 10)
@ -146,7 +147,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 2
[sub_resource type="Resource" id="Resource_ob3ci"]
[sub_resource type="Resource" id="Resource_p6hgd"]
script = ExtResource("9_nrbqc")
iterations = 3
offset_step = 0.2
@ -158,7 +159,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 0
[sub_resource type="Resource" id="Resource_61s38"]
[sub_resource type="Resource" id="Resource_o0mww"]
script = ExtResource("10_1c0ay")
ray_direction = Vector3(0, -1, 0)
ray_length = 5.0
@ -174,9 +175,9 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
[sub_resource type="Resource" id="Resource_p6hgd"]
[sub_resource type="Resource" id="Resource_ckunl"]
script = ExtResource("5_3bxb3")
stack = Array[ExtResource("6_53v87")]([SubResource("Resource_615iq"), SubResource("Resource_31h7w"), SubResource("Resource_ob3ci"), SubResource("Resource_61s38")])
stack = Array[ExtResource("6_53v87")]([SubResource("Resource_ob3ci"), SubResource("Resource_61s38"), SubResource("Resource_p6hgd"), SubResource("Resource_o0mww")])
[sub_resource type="Resource" id="Resource_f17e3"]
script = ExtResource("12_615iq")
@ -207,7 +208,8 @@ metadata/_edit_lock_ = true
[node name="ScatterGrass" type="Node3D" parent="Meadow"]
script = ExtResource("4_u6m7x")
modifier_stack = SubResource("Resource_purgm")
force_rebuild_on_load = false
modifier_stack = SubResource("Resource_31h7w")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
metadata/_custom_type_script = "uid://mlpya7qid02x"
@ -249,7 +251,8 @@ metadata/_custom_type_script = "uid://bsl3en0gdt8ka"
[node name="ScatterTrees" type="Node3D" parent="Meadow"]
script = ExtResource("4_u6m7x")
modifier_stack = SubResource("Resource_p6hgd")
force_rebuild_on_load = false
modifier_stack = SubResource("Resource_ckunl")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
metadata/_custom_type_script = "uid://mlpya7qid02x"
@ -276,6 +279,11 @@ negative = true
shape = SubResource("Resource_x2olw")
metadata/_custom_type_script = "uid://bsl3en0gdt8ka"
[node name="ScatterCache" type="Node3D" parent="Meadow"]
script = ExtResource("15_u6m7x")
cache_file = "res://addons/proton_scatter/cache/house_big_10774354_scatter_cache.res"
metadata/_custom_type_script = "uid://bfr4urrxjg8sm"
[node name="WallsAndShit" type="Node3D" parent="."]
[node name="Overhang_UnevenBrick_Corner_Front3" parent="WallsAndShit" instance=ExtResource("5_k70vi")]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=28 format=3 uid="uid://ewd06ff76y0i"]
[gd_scene load_steps=29 format=3 uid="uid://ewd06ff76y0i"]
[ext_resource type="Script" uid="uid://mlpya7qid02x" path="res://addons/proton_scatter/src/scatter.gd" id="1_0swbt"]
[ext_resource type="Script" uid="uid://dr0q8wis1hmem" path="res://addons/proton_scatter/src/stack/modifier_stack.gd" id="2_gnqbt"]
@ -11,6 +11,7 @@
[ext_resource type="Script" uid="uid://bsl3en0gdt8ka" path="res://addons/proton_scatter/src/scatter_shape.gd" id="9_88tl0"]
[ext_resource type="Script" uid="uid://djsvn08xssx6k" path="res://addons/proton_scatter/src/shapes/sphere_shape.gd" id="10_g5616"]
[ext_resource type="Script" uid="uid://d011g8ga6gea7" path="res://addons/proton_scatter/src/shapes/box_shape.gd" id="11_woep0"]
[ext_resource type="Script" uid="uid://bfr4urrxjg8sm" path="res://addons/proton_scatter/src/cache/scatter_cache.gd" id="12_0swbt"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dss4m"]
albedo_color = Color(0.448364, 0.428649, 0.0977373, 1)
@ -18,7 +19,7 @@ albedo_color = Color(0.448364, 0.428649, 0.0977373, 1)
[sub_resource type="BoxMesh" id="BoxMesh_kpybi"]
size = Vector3(1000, 0.5, 1000)
[sub_resource type="Resource" id="Resource_0swbt"]
[sub_resource type="Resource" id="Resource_gnqbt"]
script = ExtResource("4_kn6t7")
amount = 1500
enabled = true
@ -27,7 +28,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 1
[sub_resource type="Resource" id="Resource_gnqbt"]
[sub_resource type="Resource" id="Resource_emo2u"]
script = ExtResource("5_7l28j")
position = Vector3(0.15, 0.15, 0.15)
rotation = Vector3(20, 360, 20)
@ -38,7 +39,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 2
[sub_resource type="Resource" id="Resource_emo2u"]
[sub_resource type="Resource" id="Resource_kn6t7"]
script = ExtResource("6_tlhyx")
iterations = 3
offset_step = 0.2
@ -50,7 +51,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 0
[sub_resource type="Resource" id="Resource_kn6t7"]
[sub_resource type="Resource" id="Resource_7l28j"]
script = ExtResource("7_px0u5")
ray_direction = Vector3(0, -1, 0)
ray_length = 5.0
@ -66,9 +67,9 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
[sub_resource type="Resource" id="Resource_7l28j"]
[sub_resource type="Resource" id="Resource_tlhyx"]
script = ExtResource("2_gnqbt")
stack = Array[ExtResource("3_emo2u")]([SubResource("Resource_0swbt"), SubResource("Resource_gnqbt"), SubResource("Resource_emo2u"), SubResource("Resource_kn6t7")])
stack = Array[ExtResource("3_emo2u")]([SubResource("Resource_gnqbt"), SubResource("Resource_emo2u"), SubResource("Resource_kn6t7"), SubResource("Resource_7l28j")])
[sub_resource type="Resource" id="Resource_37qwj"]
script = ExtResource("10_g5616")
@ -80,7 +81,7 @@ script = ExtResource("11_woep0")
size = Vector3(5.47877, 1, 7.53509)
metadata/_custom_type_script = "uid://d011g8ga6gea7"
[sub_resource type="Resource" id="Resource_tlhyx"]
[sub_resource type="Resource" id="Resource_px0u5"]
script = ExtResource("4_kn6t7")
amount = 1200
enabled = true
@ -89,7 +90,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 1
[sub_resource type="Resource" id="Resource_px0u5"]
[sub_resource type="Resource" id="Resource_igrg6"]
script = ExtResource("5_7l28j")
position = Vector3(0.1, 0.15, 0.1)
rotation = Vector3(10, 360, 10)
@ -100,7 +101,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 2
[sub_resource type="Resource" id="Resource_igrg6"]
[sub_resource type="Resource" id="Resource_88tl0"]
script = ExtResource("6_tlhyx")
iterations = 3
offset_step = 0.2
@ -112,7 +113,7 @@ custom_seed = 0
restrict_height = true
reference_frame = 0
[sub_resource type="Resource" id="Resource_88tl0"]
[sub_resource type="Resource" id="Resource_g5616"]
script = ExtResource("7_px0u5")
ray_direction = Vector3(0, -1, 0)
ray_length = 5.0
@ -128,9 +129,9 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
[sub_resource type="Resource" id="Resource_g5616"]
[sub_resource type="Resource" id="Resource_woep0"]
script = ExtResource("2_gnqbt")
stack = Array[ExtResource("3_emo2u")]([SubResource("Resource_tlhyx"), SubResource("Resource_px0u5"), SubResource("Resource_igrg6"), SubResource("Resource_88tl0")])
stack = Array[ExtResource("3_emo2u")]([SubResource("Resource_px0u5"), SubResource("Resource_igrg6"), SubResource("Resource_88tl0"), SubResource("Resource_g5616")])
[sub_resource type="Resource" id="Resource_f17e3"]
script = ExtResource("11_woep0")
@ -148,7 +149,8 @@ mesh = SubResource("BoxMesh_kpybi")
[node name="ScatterGrass" type="Node3D" parent="."]
script = ExtResource("1_0swbt")
modifier_stack = SubResource("Resource_7l28j")
force_rebuild_on_load = false
modifier_stack = SubResource("Resource_tlhyx")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
metadata/_custom_type_script = "uid://mlpya7qid02x"
@ -182,7 +184,8 @@ metadata/_custom_type_script = "uid://bsl3en0gdt8ka"
[node name="ScatterTrees" type="Node3D" parent="."]
script = ExtResource("1_0swbt")
modifier_stack = SubResource("Resource_g5616")
force_rebuild_on_load = false
modifier_stack = SubResource("Resource_woep0")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
metadata/_custom_type_script = "uid://mlpya7qid02x"
@ -208,3 +211,8 @@ script = ExtResource("9_88tl0")
negative = true
shape = SubResource("Resource_x2olw")
metadata/_custom_type_script = "uid://bsl3en0gdt8ka"
[node name="ScatterCache" type="Node3D" parent="."]
script = ExtResource("12_0swbt")
cache_file = "res://addons/proton_scatter/cache/meadow_1404399578_scatter_cache.res"
metadata/_custom_type_script = "uid://bfr4urrxjg8sm"

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=28 format=4 uid="uid://dtbrnxalat1d4"]
[gd_scene load_steps=29 format=4 uid="uid://dtbrnxalat1d4"]
[ext_resource type="PackedScene" uid="uid://wsu3b5udqtdu" path="res://meshes/village/Wall_UnevenBrick_Straight.gltf" id="1_4mrxx"]
[ext_resource type="Texture2D" uid="uid://bgc5rl13dopuj" path="res://addons/proton_scatter/demos/assets/textures/sky_2.png" id="1_w7kh3"]
@ -14,9 +14,9 @@
[ext_resource type="Material" uid="uid://dcfkcyddxkglf" path="res://addons/portals/materials/editor-preview-portal-material.tres" id="14_dss4m"]
[ext_resource type="Script" uid="uid://bxcel82b180o3" path="res://addons/portals/scripts/portal_boxmesh.gd" id="15_7t5mc"]
[ext_resource type="PackedScene" uid="uid://clxuoprslq8em" path="res://scenes/house_big.tscn" id="16_dss4m"]
[ext_resource type="Script" uid="uid://co2pjpdo4nyto" path="res://scripts/cinematic_camera.gd" id="18_lakw3"]
[ext_resource type="PackedScene" uid="uid://dc4ynch2n1ish" path="res://meshes/village/Roof_RoundTiles_4x4.gltf" id="22_kpybi"]
[ext_resource type="PackedScene" uid="uid://b7mjoyryltilk" path="res://meshes/village/Roof_Front_Brick4.gltf" id="23_ctatt"]
[ext_resource type="Script" uid="uid://d2crarvkhd45r" path="res://scripts/player.gd" id="23_kpybi"]
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_q5onr"]
panorama = ExtResource("1_w7kh3")
@ -37,10 +37,6 @@ ssao_intensity = 5.0
fog_density = 0.0051
fog_sky_affect = 0.23
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ctatt"]
radius = 0.4
height = 1.75
[sub_resource type="BoxShape3D" id="BoxShape3D_q5onr"]
size = Vector3(1.83496, 2.19373, 1.46497)
@ -82,6 +78,15 @@ size = Vector3(1.5, 2.5, 1)
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_dss4m"]
[sub_resource type="SphereMesh" id="SphereMesh_lakw3"]
[sub_resource type="Curve3D" id="Curve3D_lakw3"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.489602, 2, 1.0528, 1.33258, 0, -1.33258, -1.33258, 0, 1.33258, -4.78907, 1, 2.00823, 1.96116, 0, -1.70973, -1.96116, 0, 1.70973, -8.76168, 0, 8.84715, 2.26288, 0, 1.33258, -2.26288, 0, -1.33258, -20.4532, 0, 9.17401, 0.301716, 0, 4.92804, -0.301716, 0, -4.92804, -24.9035, 0, 0.851653, -2.7406, 0, 1.83544, 2.7406, 0, -1.83544, -19.9503, 0, -8.37586, -3.04231, 0, -1.9863, 3.04231, 0, 1.9863, -8.98796, 0, -8.225, 0, 0, 0, 0, 0, 0, -6.02108, -1.2, -0.757503),
"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0)
}
point_count = 8
[node name="World" type="Node3D"]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
@ -93,19 +98,7 @@ light_color = Color(0.939669, 0.875855, 0.802177, 1)
light_energy = 2.0
light_bake_mode = 1
shadow_enabled = true
[node name="Player" type="CharacterBody3D" parent="." node_paths=PackedStringArray("camera")]
transform = Transform3D(-0.658689, 0, 0.752415, 0, 1, 0, -0.752415, 0, -0.658689, 12.1193, 1.93814, -3.63533)
collision_layer = 3
script = ExtResource("23_kpybi")
camera = NodePath("Camera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player"]
shape = SubResource("CapsuleShape3D_ctatt")
[node name="Camera3D" type="Camera3D" parent="Player"]
transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, 0.7, 0)
directional_shadow_blend_splits = true
[node name="Meadow" parent="." instance=ExtResource("3_jhx03")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
@ -272,5 +265,26 @@ shape = SubResource("BoxShape3D_7t5mc")
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
shape = SubResource("WorldBoundaryShape3D_dss4m")
[node name="CinematicCamera" type="Camera3D" parent="." node_paths=PackedStringArray("path", "follower", "target")]
cull_mask = 524287
current = true
script = ExtResource("18_lakw3")
travel_time = 10.0
path = NodePath("../A_FlyAround")
follower = NodePath("../A_FlyAround/PathFollow3D")
target = NodePath("../Target")
[node name="Target" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.12776, 0.638181, -3.20715)
layers = 524288
mesh = SubResource("SphereMesh_lakw3")
[node name="A_FlyAround" type="Path3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.0132, 3, -2.29886)
curve = SubResource("Curve3D_lakw3")
[node name="PathFollow3D" type="PathFollow3D" parent="A_FlyAround"]
transform = Transform3D(-0.21693, -0.21614, 0.951955, 0, 0.975179, 0.221412, -0.976186, 0.0480312, -0.211546, -0.489602, 2, 1.0528)
[connection signal="body_entered" from="DoorOpener" to="House_Small/PortalDoor" method="open"]
[connection signal="body_entered" from="DoorOpener" to="HouseBig" method="open_door"]

View File

@ -0,0 +1,21 @@
extends Camera3D
@export_range(1, 100, 0.1, "suffix:s") var travel_time: float
@export var path: Path3D
@export var follower: PathFollow3D
@export var target: MeshInstance3D
func _ready() -> void:
assert (path != null)
assert(follower != null)
assert(target != null)
var t = get_tree().create_tween()
t.set_trans(Tween.TRANS_CUBIC)
t.set_ease(Tween.EASE_IN_OUT)
t.tween_property(follower, "progress_ratio", 1, travel_time)
t.tween_callback(get_tree().quit.bind(0))
func _process(delta: float) -> void:
look_at(target.global_position)
global_position = follower.global_position

View File

@ -0,0 +1 @@
uid://co2pjpdo4nyto