Add phantom camera

This commit is contained in:
2025-03-01 19:52:43 +01:00
parent 57930f1c50
commit a9f8fb717e
149 changed files with 19276 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
#####################
EXAMPLE ASSET CREDITS
#####################
# level_spritesheet
https://opengameart.org/content/a-platformer-in-the-forest
https://opengameart.org/users/buch

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,120 @@
[gd_scene load_steps=10 format=3 uid="uid://7kh0xydx0b1o"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d.gd" id="1_jnc14"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_62b2n"]
[ext_resource type="Texture2D" uid="uid://cscjjt55iw2cu" path="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg" id="2_yr8cm"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="4_rloon"]
[ext_resource type="Resource" uid="uid://cecrnq0wnkexh" path="res://addons/phantom_camera/examples/resources/tween/item_focus_phantom_camera_2d_tween.tres" id="5_4iyk1"]
[ext_resource type="Resource" uid="uid://cllveybboaqk5" path="res://addons/phantom_camera/examples/resources/tween/inventory_phantom_camera_2d_tween.tres" id="6_2h6fv"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5hryl"]
bg_color = Color(0.85098, 0.894118, 0.937255, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.113725, 0.113725, 0.113725, 1)
corner_radius_top_left = 7
corner_radius_top_right = 7
corner_radius_bottom_right = 7
corner_radius_bottom_left = 7
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xj4ar"]
size = Vector2(64, 57)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_18i13"]
size = Vector2(64, 57)
[node name="CharacterBody2D" type="CharacterBody2D"]
script = ExtResource("1_jnc14")
[node name="DarkOverlay" type="ColorRect" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -1000.0
offset_top = -1000.0
offset_right = 1000.0
offset_bottom = 1000.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.615686)
[node name="PlayerVisuals" type="Node2D" parent="."]
unique_name_in_owner = true
[node name="PlayerSprite" type="Sprite2D" parent="PlayerVisuals"]
unique_name_in_owner = true
scale = Vector2(0.5, 0.5)
texture = ExtResource("2_yr8cm")
[node name="InteractionPrompt" type="Panel" parent="PlayerVisuals"]
unique_name_in_owner = true
visible = false
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -16.0
offset_top = -66.0
offset_right = 16.0
offset_bottom = -34.0
grow_horizontal = 2
grow_vertical = 0
size_flags_vertical = 0
theme_override_styles/panel = SubResource("StyleBoxFlat_5hryl")
[node name="Label" type="Label" parent="PlayerVisuals/InteractionPrompt"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -3.0
offset_bottom = 5.0
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("2_62b2n")
theme_override_font_sizes/font_size = 26
text = "F"
horizontal_alignment = 1
vertical_alignment = 1
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -0.5)
shape = SubResource("RectangleShape2D_xj4ar")
[node name="PlayerArea2D" type="Area2D" parent="."]
unique_name_in_owner = true
collision_layer = 2
collision_mask = 2
priority = 20
[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerArea2D"]
position = Vector2(0, -0.5)
shape = SubResource("RectangleShape2D_18i13")
[node name="ItemFocusPhantomCamera2D" type="Node2D" parent="."]
unique_name_in_owner = true
position = Vector2(0, -122)
script = ExtResource("4_rloon")
zoom = Vector2(2, 2)
frame_preview = false
tween_resource = ExtResource("5_4iyk1")
follow_damping_value = Vector2(0, 0)
draw_limits = true
[node name="InventoryPhantomCamera2D" type="Node2D" parent="."]
unique_name_in_owner = true
position = Vector2(-183, -5)
script = ExtResource("4_rloon")
zoom = Vector2(2.5, 2.5)
frame_preview = false
tween_resource = ExtResource("6_2h6fv")
follow_damping_value = Vector2(0, 0)
draw_limits = true

View File

@@ -0,0 +1,407 @@
[gd_scene load_steps=41 format=3 uid="uid://cypbptekk8etg"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_u86qq"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_jl1he"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="3_an0dt"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="3_yfuq5"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="4_iy6qn"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="5_0ku52"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="6_prr6u"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/npc.gd" id="7_nl3ax"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="8_xvqcg"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="9_hqgwi"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="10_cd0kn"]
[sub_resource type="Resource" id="Resource_jtk1d"]
script = ExtResource("6_prr6u")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_o161n"]
script = ExtResource("6_prr6u")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxMesh" id="BoxMesh_7tjw4"]
size = Vector3(2, 0.5, 4)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hpllm"]
transparency = 1
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
[sub_resource type="BoxShape3D" id="BoxShape3D_65o6h"]
size = Vector3(2, 0.5, 4)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tpc7d"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_g0eml"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v5iy7"]
albedo_color = Color(0.988235, 0.478431, 0.905882, 1)
[sub_resource type="Resource" id="Resource_tpvee"]
script = ExtResource("8_xvqcg")
duration = 0.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_bxbnv"]
script = ExtResource("6_prr6u")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_wcrbb"]
size = Vector3(6.8, 0.1, 5.4)
[sub_resource type="Resource" id="Resource_7ih0k"]
script = ExtResource("8_xvqcg")
duration = 0.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_4iyps"]
script = ExtResource("6_prr6u")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_ctyr8"]
size = Vector3(7.4, 0.1, 3.6)
[sub_resource type="Resource" id="Resource_x5y0u"]
script = ExtResource("8_xvqcg")
duration = 0.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_pgiyx"]
script = ExtResource("6_prr6u")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_ua072"]
size = Vector3(6.8, 0.1, 3.6)
[sub_resource type="BoxMesh" id="BoxMesh_ugc3s"]
size = Vector3(1, 1, 2)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_68thd"]
albedo_color = Color(0.34902, 0.862745, 0.854902, 1)
[sub_resource type="BoxMesh" id="BoxMesh_wphly"]
size = Vector3(1, 0.5, 1)
[sub_resource type="BoxMesh" id="BoxMesh_gyp5s"]
size = Vector3(20, 40, 30)
[sub_resource type="BoxShape3D" id="BoxShape3D_lfaqs"]
size = Vector3(20, 40, 30)
[sub_resource type="BoxMesh" id="BoxMesh_n70lt"]
size = Vector3(14, 40, 6)
[sub_resource type="BoxShape3D" id="BoxShape3D_jxmqm"]
size = Vector3(14, 40, 6)
[sub_resource type="BoxMesh" id="BoxMesh_x0tgm"]
size = Vector3(8, 40, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_t67ef"]
size = Vector3(50, 40, 1)
[sub_resource type="BoxMesh" id="BoxMesh_rmslh"]
size = Vector3(0.5, 6, 13.5)
[sub_resource type="BoxMesh" id="BoxMesh_242ij"]
size = Vector3(2, 3, 3)
[sub_resource type="BoxMesh" id="BoxMesh_niuda"]
size = Vector3(8, 6, 0.5)
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.948876, 0.315649, 0, -0.315649, 0.948876, -2.53871, 2, 9.76232)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_u86qq")
[node name="PlayerGroup" type="Node" parent="."]
[node name="PlayerCharacterBody3D" parent="PlayerGroup" instance=ExtResource("2_jl1he")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.53871, 0.5, 7.26232)
script = ExtResource("3_yfuq5")
[node name="MovementInstructionsLabel" type="Label3D" parent="PlayerGroup"]
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -2.47682, -0.0708016, 7.93048)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("3_an0dt")
font_size = 48
[node name="PlayerPhantomCamera3D" type="Node3D" parent="PlayerGroup" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
top_level = true
script = ExtResource("4_iy6qn")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = ExtResource("5_0ku52")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jtk1d")
follow_offset = Vector3(0, 1.5, 2.5)
follow_damping = true
[node name="NPCGroup" type="Node" parent="."]
[node name="NPCPhantomCamera3D" type="Node3D" parent="NPCGroup"]
unique_name_in_owner = true
transform = Transform3D(0.616596, -0.109786, 0.779587, -2.23517e-08, 0.990229, 0.13945, -0.78728, -0.0859841, 0.610571, -2.98802, 1.50739, 1.19719)
script = ExtResource("4_iy6qn")
tween_resource = ExtResource("5_0ku52")
camera_3d_resource = SubResource("Resource_o161n")
[node name="NPCDescriptionLabel" type="Label3D" parent="NPCGroup"]
transform = Transform3D(1, 0, 0, 0, 0.866026, 0.5, 0, -0.5, 0.866025, -3.04693, 0.367287, 0.953757)
text = "Input Example"
font = ExtResource("3_an0dt")
[node name="NPCDialogueExampleLabel" type="Label3D" parent="NPCGroup"]
unique_name_in_owner = true
transform = Transform3D(1, 4.54671e-10, 1.65487e-10, 4.25644e-10, 0.939693, 0.34202, 0, -0.34202, 0.939693, -4.46738, 1.58641, -0.253679)
modulate = Color(1, 0.603922, 0.254902, 1)
text = "Press [ F ] to change camera"
font = ExtResource("3_an0dt")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="NPCGroup"]
transform = Transform3D(0.819152, 4.83851e-10, -0.573576, -3.92481e-09, 1, -6.3473e-09, 0.573576, 7.45058e-09, 0.819152, -3.46138, -0.4, 0.875321)
mesh = SubResource("BoxMesh_7tjw4")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_hpllm")
metadata/_edit_group_ = true
[node name="NPCInteractionArea3D" type="Area3D" parent="NPCGroup/NPCInteractionZoneMesh"]
unique_name_in_owner = true
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
monitorable = false
[node name="NPCInterationCollisionShape3D" type="CollisionShape3D" parent="NPCGroup/NPCInteractionZoneMesh/NPCInteractionArea3D"]
shape = SubResource("BoxShape3D_65o6h")
[node name="NPC" type="StaticBody3D" parent="NPCGroup"]
transform = Transform3D(1, 4.83851e-10, 0, 4.25644e-10, 1, -7.45058e-09, 0, 7.45058e-09, 1, -4.56338, 0.5, -0.272679)
script = ExtResource("7_nl3ax")
[node name="PlayerCollisionShape3D2" type="CollisionShape3D" parent="NPCGroup/NPC"]
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
shape = SubResource("CapsuleShape3D_tpc7d")
[node name="NPCMesh" type="MeshInstance3D" parent="NPCGroup/NPC"]
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
mesh = SubResource("CapsuleMesh_g0eml")
skeleton = NodePath("../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_v5iy7")
[node name="MoveToLocation" type="Node3D" parent="NPCGroup"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.70084, 0.5, 0.962891)
[node name="FixedCameraTriggerZone" type="Node" parent="."]
[node name="FixedCameraLabel" type="Label3D" parent="FixedCameraTriggerZone"]
unique_name_in_owner = true
transform = Transform3D(0.939693, 0.280167, -0.196175, 1.49012e-08, 0.573577, 0.819152, 0.34202, -0.769751, 0.538986, -0.538716, -0.247626, 3.13456)
text = "Fixed Camera
Example"
font = ExtResource("3_an0dt")
[node name="NorthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(0.38357, -0.555836, 0.737507, -0.105898, 0.766851, 0.633027, -0.917417, -0.320912, 0.235279, 6.89638, 4.73986, 0.115512)
script = ExtResource("4_iy6qn")
tween_resource = SubResource("Resource_tpvee")
camera_3d_resource = SubResource("Resource_bxbnv")
[node name="NorthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, -0.9)
priority = 5
script = ExtResource("9_hqgwi")
area_pcam = NodePath("../NorthRoomPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/NorthRoomTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, -0.4)
shape = SubResource("BoxShape3D_wcrbb")
[node name="EntryRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(0.258818, -0.482963, 0.836515, 1.3027e-15, 0.866025, 0.499999, -0.965924, -0.129409, 0.224143, 6.69741, 4.73364, 4.02374)
script = ExtResource("4_iy6qn")
tween_resource = SubResource("Resource_7ih0k")
camera_3d_resource = SubResource("Resource_4iyps")
[node name="EntryRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.00003, -0.454982, 3.00572)
priority = 5
script = ExtResource("9_hqgwi")
area_pcam = NodePath("../EntryRoomPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/EntryRoomTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0.2)
shape = SubResource("BoxShape3D_ctyr8")
[node name="SouthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(-0.766043, -0.492403, 0.413175, 0, 0.642787, 0.766043, -0.642786, 0.586825, -0.492403, 6.89741, 4.73364, 5.62374)
script = ExtResource("4_iy6qn")
tween_resource = SubResource("Resource_x5y0u")
camera_3d_resource = SubResource("Resource_pgiyx")
[node name="SouthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, 6.7)
priority = 5
script = ExtResource("9_hqgwi")
area_pcam = NodePath("../SouthRoomPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/SouthRoomTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, 0.1)
shape = SubResource("BoxShape3D_ua072")
[node name="CSGMesh3D" type="CSGMesh3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.14238, 1.82571, 2.88655)
mesh = SubResource("BoxMesh_ugc3s")
material = SubResource("StandardMaterial3D_68thd")
[node name="CSGMesh3D2" type="CSGMesh3D" parent="FixedCameraTriggerZone/CSGMesh3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00192642, -0.0120339, 0.00494432)
operation = 2
mesh = SubResource("BoxMesh_wphly")
material = SubResource("StandardMaterial3D_68thd")
[node name="Environment" type="Node" parent="."]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Environment" type="Node3D" parent="Environment"]
[node name="Floor" parent="Environment/Environment" instance=ExtResource("10_cd0kn")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="West Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0.5, 0)
metadata/_edit_group_ = true
metadata/_edit_lock_ = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/West Wall"]
mesh = SubResource("BoxMesh_gyp5s")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/West Wall"]
shape = SubResource("BoxShape3D_lfaqs")
[node name="East Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.999, 0.502, 0)
metadata/_edit_group_ = true
metadata/_edit_lock_ = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/East Wall"]
mesh = SubResource("BoxMesh_gyp5s")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/East Wall"]
shape = SubResource("BoxShape3D_lfaqs")
[node name="North Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -6.90828)
metadata/_edit_group_ = true
metadata/_edit_lock_ = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/North Wall"]
mesh = SubResource("BoxMesh_n70lt")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/North Wall"]
shape = SubResource("BoxShape3D_jxmqm")
[node name="South Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 0.5, 9.087)
metadata/_edit_group_ = true
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Environment/Environment/South Wall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0)
mesh = SubResource("BoxMesh_x0tgm")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/South Wall"]
shape = SubResource("BoxShape3D_t67ef")
[node name="FixedCamOuterWall" type="CSGMesh3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 2)
use_collision = true
mesh = SubResource("BoxMesh_rmslh")
[node name="FixedCamOuterDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamOuterWall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 1)
operation = 2
mesh = SubResource("BoxMesh_242ij")
[node name="FixedCamNorthWall" type="CSGMesh3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 1)
use_collision = true
mesh = SubResource("BoxMesh_niuda")
[node name="FixedCamNorthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamNorthWall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0)
operation = 2
mesh = SubResource("BoxMesh_242ij")
[node name="FixedCamSouthWall" type="CSGMesh3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 5.1)
use_collision = true
mesh = SubResource("BoxMesh_niuda")
[node name="FixedCamSouthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamSouthWall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.50541, 1.19209e-07)
operation = 2
mesh = SubResource("BoxMesh_242ij")

View File

@@ -0,0 +1,155 @@
[gd_scene load_steps=11 format=3 uid="uid://cx7x48cpi8gcd"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_6uslv"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_5cpe8"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_422w7"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_4qurp"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_uw36d"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_fcomr"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_i060b"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_iyghi"]
[sub_resource type="Resource" id="Resource_wg1pr"]
script = ExtResource("4_4qurp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("7_iyghi")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.793353, 0.608762, 0, -0.608762, 0.793353, 0.083587, 2.94168, 5.22787)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_6uslv")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
top_level = true
script = ExtResource("2_5cpe8")
follow_mode = 5
follow_target = NodePath("../PlayerCharacterBody3D2")
tween_resource = ExtResource("3_422w7")
tween_on_load = false
camera_3d_resource = SubResource("Resource_wg1pr")
follow_damping = true
follow_distance = 4.0
dead_zone_width = 0.139
dead_zone_height = 0.14
show_viewfinder_in_play = true
spring_length = 4.0
[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("5_uw36d")]
script = ExtResource("6_fcomr")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_i060b")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.636134, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.54597, -0.540694, -3.39517)
use_collision = true
radius = 1.53269
height = 2.5036
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.64877, -1.50101, 1.22863)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.4732, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.40027, -1.69814, 3.36997)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.13768, -0.599204, -1.04651)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7976, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.84078, -0.497663, 4.44352)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.88916, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.83837, -0.241718, 7.14677)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.34377, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.9834, 0.138478, -1.89037)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.38147, 0.0440434, 8.36617)
use_collision = true
size = Vector3(4.57784, 1.08809, 3.11285)

View File

@@ -0,0 +1,209 @@
[gd_scene load_steps=15 format=3 uid="uid://d2lx45noxq685"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_7a3wq"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_158c0"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_ganw1"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_kig2n"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_caky3"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_b6ic4"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_kkbaa"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_i1dbs"]
[sub_resource type="Resource" id="Resource_ucp3e"]
script = ExtResource("3_ganw1")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_ab013"]
script = ExtResource("4_kig2n")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("7_i1dbs")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Node3D" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.638767, 0.7694, 0, -0.7694, 0.638768, 0, 6.39, 7)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_7a3wq")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, 0, 6.39, 7)
top_level = true
script = ExtResource("2_158c0")
priority = 5
follow_mode = 1
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_ucp3e")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ab013")
follow_damping = true
follow_damping_value = Vector3(0.3, 0.3, 0.3)
[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_caky3")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.39, 7)
script = ExtResource("6_b6ic4")
enable_gravity = false
[node name="PlayerVisual" parent="Player/PlayerCharacterBody3D" index="2"]
visible = false
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.04486, 0.519002, -1.52506)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.51494, 0.519, 4.06618)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_kkbaa")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.62737, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.9378, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.58617, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.774, 0.201103, 2.71259)
use_collision = true
radius = 1.41311
height = 1.40221
sides = 32
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.40488, 0.201101, 11.6804)
use_collision = true
radius = 2.21673
height = 7.88261
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.20971, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9771, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.555532, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.0611, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.21187, -1.90735e-06, 0.346393)
use_collision = true
inner_radius = 1.3
outer_radius = 2.0
sides = 32
ring_sides = 18
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9283, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.49828, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.15267, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.3427, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.08027, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.7748, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1473, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)
[editable path="Player/PlayerCharacterBody3D"]

View File

@@ -0,0 +1,179 @@
[gd_scene load_steps=14 format=3 uid="uid://cqy81q5p0tsda"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_3iw7y"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_vcfky"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="3_2idlr"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_65wck"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_b0eay"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_i3ale"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_5hq8j"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_7lab4"]
[sub_resource type="Resource" id="Resource_1iman"]
script = ExtResource("5_i3ale")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("7_7lab4")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Node3D" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -7.26116, 5.72974, 12.279)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_3iw7y")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("2_vcfky")]
script = ExtResource("3_2idlr")
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_targets")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
top_level = true
script = ExtResource("3_65wck")
priority = 5
follow_mode = 3
follow_targets = [NodePath("../PlayerCharacterBody3D2"), NodePath("../../NPCs/PlayerMeshInstance3D"), NodePath("../../NPCs/PlayerMeshInstance3D2")]
tween_resource = ExtResource("4_b0eay")
tween_on_load = false
camera_3d_resource = SubResource("Resource_1iman")
follow_damping = true
follow_distance = 5.0
auto_follow_distance = true
auto_follow_distance_min = 5.0
auto_follow_distance_max = 15.0
auto_follow_distance_divisor = 20.0
spring_length = 5.0
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.6059, 0.519002, 0.128472)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.0461, 0.519, 0.249913)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_5hq8j")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.9141, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.6099, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.95333, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.4682, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.90455, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.31901, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7985, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.1236, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)

View File

@@ -0,0 +1,241 @@
[gd_scene load_steps=25 format=3 uid="uid://oo1y1sjdmr6k"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_p8ccw"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_8itog"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_xqpq0"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_akuuo"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_0nadx"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_7h7mx"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="6_mkxip"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/path_follow.gd" id="7_g1m51"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="8_a1h2k"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="9_rk5lh"]
[sub_resource type="Resource" id="Resource_ofv2c"]
script = ExtResource("4_akuuo")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_01tho"]
script = ExtResource("6_mkxip")
duration = 1.2
transition = 3
ease = 2
[sub_resource type="Resource" id="Resource_syh5m"]
script = ExtResource("4_akuuo")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Curve3D" id="Curve3D_b33df"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_aovgi"]
size = Vector3(6, 0.1, 10)
[sub_resource type="BoxMesh" id="BoxMesh_0hdeh"]
size = Vector3(6, 0.1, 10)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fsm1b"]
transparency = 1
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
[sub_resource type="Resource" id="Resource_xci4c"]
script = ExtResource("4_akuuo")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Curve3D" id="Curve3D_8uw2x"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_ctnqu"]
size = Vector3(12, 0.1, 4)
[sub_resource type="BoxMesh" id="BoxMesh_f6dp8"]
size = Vector3(12, 0.1, 4)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gwnkj"]
transparency = 1
albedo_color = Color(0.568403, 0.988235, 0.762724, 0.0901961)
[sub_resource type="BoxMesh" id="BoxMesh_7l3dh"]
[sub_resource type="BoxMesh" id="BoxMesh_as6ok"]
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.999996, -0.00216283, 0.00184472, 0, 0.648938, 0.760841, -0.00284268, -0.760838, 0.648936, 0, 2.507, 1.5)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_p8ccw")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
top_level = true
script = ExtResource("2_8itog")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D2")
tween_resource = ExtResource("3_xqpq0")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ofv2c")
follow_offset = Vector3(0, 2, 1.5)
follow_damping = true
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("5_0nadx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.507, 0)
script = ExtResource("6_7h7mx")
[node name="Paths" type="Node" parent="."]
[node name="PathPhantomCamera3D" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, -0.31028, 7.9199, -1.60976)
top_level = true
script = ExtResource("2_8itog")
priority = 2
follow_mode = 4
follow_target = NodePath("../../PlayerCharacterBody3D2")
follow_path = NodePath("../FollowPath")
tween_resource = SubResource("Resource_01tho")
camera_3d_resource = SubResource("Resource_syh5m")
follow_damping = true
[node name="FollowPath" type="Path3D" parent="Paths"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.31028, 7.9199, -1.60976)
curve = SubResource("Curve3D_b33df")
[node name="StraightPathFollowTrigger" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, -0.45, -6.73666)
priority = 5
script = ExtResource("7_g1m51")
path_pcam = NodePath("../PathPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger"]
shape = SubResource("BoxShape3D_aovgi")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger/CollisionShape3D"]
mesh = SubResource("BoxMesh_0hdeh")
skeleton = NodePath("../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_fsm1b")
metadata/_edit_group_ = true
[node name="PathPhantomCamera3D2" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 7.9199, -13.4572)
top_level = true
visible = false
script = ExtResource("2_8itog")
priority = 2
follow_mode = 4
follow_target = NodePath("../../PlayerCharacterBody3D2")
follow_path = NodePath("../FollowPath2")
tween_resource = SubResource("Resource_01tho")
camera_3d_resource = SubResource("Resource_xci4c")
follow_damping = true
follow_damping_value = Vector3(0.6, 0.1, 0.1)
[node name="FollowPath2" type="Path3D" parent="Paths"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.97141, 7.9199, -13.4572)
curve = SubResource("Curve3D_8uw2x")
[node name="StraightPathFollowTrigger2" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, 0, -13.7367)
priority = 5
script = ExtResource("7_g1m51")
path_pcam = NodePath("../PathPhantomCamera3D2")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger2"]
shape = SubResource("BoxShape3D_ctnqu")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger2/CollisionShape3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.45, 0)
mesh = SubResource("BoxMesh_f6dp8")
skeleton = NodePath("../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_gwnkj")
metadata/_edit_group_ = true
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("8_a1h2k")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Floor3" parent="Environment" instance=ExtResource("8_a1h2k")]
transform = Transform3D(6, 0, 0, 0, 1, 0, 0, 0, 1, -0.44204, 0, 1.76334)
[node name="Floor2" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, -0.516667, 1, -6.5)
[node name="Floor5" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, 0.65, 1, -6.5)
[node name="Floor4" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(2, 0, 0, 0, 3, 0, 0, 0, 1, 0.0666667, 1, -18)
[node name="Floor6" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, -0.766667, 1, -13)
mesh = SubResource("BoxMesh_7l3dh")
[node name="Floor8" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, -1.01667, 1, -15.5)
mesh = SubResource("BoxMesh_as6ok")
[node name="Floor9" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, 1.15, 1, -15.5)
mesh = SubResource("BoxMesh_as6ok")
[node name="Floor7" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, 0.9, 1, -13)
mesh = SubResource("BoxMesh_7l3dh")
[node name="NPCDescriptionLabel" type="Label3D" parent="Environment"]
transform = Transform3D(5.21541e-08, -1, -7.7486e-07, -1.10675e-15, 2.23517e-07, 0.999999, -0.999999, -7.45058e-08, -5.68829e-14, -3.47306, 2.59595, -5.51755)
text = "Camera follows player while confined to a Path3D"
font = ExtResource("9_rk5lh")
font_size = 64
[node name="MovementInstructionsLabel" type="Label3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.02174, -0.455369, 0.570585)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("9_rk5lh")
font_size = 48

View File

@@ -0,0 +1,162 @@
[gd_scene load_steps=12 format=3 uid="uid://c7uyfhhnrmkbx"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_gt67h"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_4ltlo"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_hldrt"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_pqibl"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_o4k7v"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_8yuc5"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_m6ich"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_pagh0"]
[sub_resource type="Resource" id="Resource_28vpp"]
script = ExtResource("3_hldrt")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_axopo"]
script = ExtResource("4_pqibl")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("7_pagh0")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Node3D2" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -13.2122, 2.5, 10.4016)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_gt67h")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.2122, 2.5, 10.4016)
top_level = true
script = ExtResource("2_4ltlo")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_28vpp")
tween_on_load = false
camera_3d_resource = SubResource("Resource_axopo")
follow_offset = Vector3(0, 2, 2)
follow_damping = true
[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_o4k7v")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.2122, 0.5, 8.40162)
script = ExtResource("6_8yuc5")
[node name="NPCs" type="Node" parent="."]
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_m6ich")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.8332, -0.540694, -3.39517)
use_collision = true
radius = 1.53269
height = 2.5036
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.936, -1.50101, 1.22863)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.6875, -1.69814, 3.36997)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.14955, -0.599204, -1.04651)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.44645, -0.497663, 4.44352)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.1256, 0.335247, 7.14677)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.30382, 0.138478, -1.89037)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.04727, 0.0440434, 8.36617)
use_collision = true
size = Vector3(4.57784, 1.08809, 3.11285)

View File

@@ -0,0 +1,218 @@
[gd_scene load_steps=22 format=3 uid="uid://bklrp02eywxsx"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="1_s26cy"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_m2d6w"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="3_l7kg8"]
[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="4_qcyfd"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_8von1"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person_4.4.gd" id="5_tarnu"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_o1fj6"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_amcmx"]
[ext_resource type="Texture2D" uid="uid://c3mskbmvnpwux" path="res://addons/phantom_camera/examples/textures/3D/target.png" id="8_rjcgw"]
[sub_resource type="Resource" id="Resource_8fhct"]
script = ExtResource("2_m2d6w")
duration = 0.3
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_7m0fv"]
script = ExtResource("3_l7kg8")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_i42vj"]
dof_blur_far_enabled = true
dof_blur_far_distance = 5.99
dof_blur_near_enabled = true
dof_blur_near_distance = 0.05
dof_blur_amount = 0.21
[sub_resource type="Resource" id="Resource_e7t18"]
script = ExtResource("2_m2d6w")
duration = 0.4
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_jogxh"]
script = ExtResource("3_l7kg8")
cull_mask = 1048575
h_offset = 1.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_fvhx5"]
dof_blur_far_enabled = true
dof_blur_far_distance = 31.1
dof_blur_near_enabled = true
dof_blur_near_distance = 1.79
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_5mfg2"]
dof_blur_far_enabled = true
dof_blur_far_distance = 5.99
dof_blur_near_enabled = true
dof_blur_near_distance = 0.05
dof_blur_amount = 0.21
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
size = Vector3(1, 10, 20)
[sub_resource type="Resource" id="Resource_afrr1"]
script = ExtResource("2_m2d6w")
duration = 0.6
transition = 3
ease = 1
[sub_resource type="Resource" id="Resource_unpfd"]
script = ExtResource("3_l7kg8")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CylinderMesh" id="CylinderMesh_sm466"]
top_radius = 1.51
height = 0.2
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hp48l"]
transparency = 1
albedo_texture = ExtResource("8_rjcgw")
uv1_scale = Vector3(1.91, 1.91, 1.91)
uv1_offset = Vector3(0.025, -0.927, 0)
[node name="Root" type="Node3D"]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 9.63713)
script = ExtResource("1_s26cy")
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_8fhct")
tween_on_load = false
camera_3d_resource = SubResource("Resource_7m0fv")
attributes = SubResource("CameraAttributesPractical_i42vj")
follow_damping = true
follow_distance = 3.5
spring_length = 3.5
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.953716, -0.0418501, 0.297778, 0, 0.990266, 0.139173, -0.300705, -0.132731, 0.944432, 0.427258, 1.68564, 7.6237)
script = ExtResource("1_s26cy")
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_e7t18")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jogxh")
attributes = SubResource("CameraAttributesPractical_fvhx5")
follow_offset = Vector3(0, 0.97, -0.399)
follow_damping_value = Vector3(0, 0, 0)
follow_distance = 1.5
spring_length = 1.5
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("4_qcyfd")]
unique_name_in_owner = true
transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, 6.60605)
script = ExtResource("5_tarnu")
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25688, 9.63713)
attributes = SubResource("CameraAttributesPractical_5mfg2")
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("5_8von1")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall2" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall3" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall4" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
script = ExtResource("1_s26cy")
tween_resource = SubResource("Resource_afrr1")
camera_3d_resource = SubResource("Resource_unpfd")
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
visible = false
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("7_amcmx")
font_size = 48
[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
visible = false
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Right Mouse Click] to \"aim\""
font = ExtResource("7_amcmx")
font_size = 48
[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
visible = false
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Space] to toggle PCam"
font = ExtResource("7_amcmx")
font_size = 48
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0.260217, 1.60477, -9.07797)
mesh = SubResource("CylinderMesh_sm466")
surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 0.0525861, 1.60477, 9.98156)
mesh = SubResource("CylinderMesh_sm466")
surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
[editable path="PlayerCharacterBody3D"]

View File

@@ -0,0 +1,185 @@
[gd_scene load_steps=17 format=3 uid="uid://ceelq6qrb41uf"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_47xf2"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person_4.4.gd" id="2_uhq7m"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_whx47"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_lii5s"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_jt2lp"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_oc4q1"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_kg7u1"]
[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="7_kut0u"]
[sub_resource type="Resource" id="Resource_8fhct"]
script = ExtResource("2_47xf2")
duration = 0.3
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_7m0fv"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_e7t18"]
script = ExtResource("2_47xf2")
duration = 0.4
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_jogxh"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 1.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
size = Vector3(1, 10, 20)
[sub_resource type="BoxMesh" id="BoxMesh_bj3re"]
size = Vector3(1, 7, 7)
[sub_resource type="Resource" id="Resource_afrr1"]
script = ExtResource("2_47xf2")
duration = 0.6
transition = 3
ease = 1
[sub_resource type="Resource" id="Resource_ioijp"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[node name="Root" type="Node3D"]
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
unique_name_in_owner = true
script = ExtResource("2_uhq7m")
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866023, 0.499997, 0, -0.499999, 0.866021, -0.0194088, 2.25687, 3.01475)
script = ExtResource("2_whx47")
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_8fhct")
tween_on_load = false
camera_3d_resource = SubResource("Resource_7m0fv")
follow_damping = true
follow_distance = 3.5
spring_length = 3.5
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.953716, -0.0104945, 0.300522, 0, 0.99939, 0.0348995, -0.300706, -0.0332842, 0.953135, 0.431374, 1.35923, 1.01438)
script = ExtResource("2_whx47")
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_e7t18")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jogxh")
follow_offset = Vector3(0, 0.8, -0.399)
follow_distance = 1.5
spring_length = 1.5
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25687, 3.01475)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("5_oc4q1")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall5" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.133, 3, -6.5)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall6" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, 0)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall7" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 3, 0)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall2" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall3" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall4" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
script = ExtResource("2_whx47")
tween_resource = SubResource("Resource_afrr1")
camera_3d_resource = SubResource("Resource_ioijp")
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("7_kg7u1")
font_size = 48
[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Right Mouse Click] to \"aim\""
font = ExtResource("7_kg7u1")
font_size = 48
[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Space] to toggle PCam"
font = ExtResource("7_kg7u1")
font_size = 48

View File

@@ -0,0 +1,197 @@
[gd_scene load_steps=15 format=3 uid="uid://dsfixtpa5xwqt"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_jbmnd"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_t3gk2"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_b2lea"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_mqo2b"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_pxkua"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_3rtu0"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_uuxs3"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_0dyt0"]
[sub_resource type="Resource" id="Resource_pwcgo"]
script = ExtResource("3_b2lea")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_ft2w3"]
script = ExtResource("4_mqo2b")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("7_0dyt0")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773412, -0.137901, 4.03222, 6.36446)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_jbmnd")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target")]
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
script = ExtResource("2_t3gk2")
priority = 10
look_at_mode = 2
look_at_target = NodePath("../PlayerCharacterBody3D2")
tween_resource = SubResource("Resource_pwcgo")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ft2w3")
look_at_damping = true
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("5_pxkua")]
script = ExtResource("6_3rtu0")
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.96028, 0.519002, -1.52506)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.59952, 0.519, 4.06618)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_uuxs3")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.00548, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.5597, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96428, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.3959, 0.201103, 2.71259)
use_collision = true
radius = 1.41311
height = 1.40221
sides = 32
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.02677, 0.201101, 11.6804)
use_collision = true
radius = 2.21673
height = 7.88261
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.8316, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5989, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17742, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.4392, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.58998, -1.90735e-06, 0.346393)
use_collision = true
inner_radius = 1.3
outer_radius = 2.0
sides = 32
ring_sides = 18
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5502, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1202, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53078, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9646, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.70216, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.1529, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.7692, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)

View File

@@ -0,0 +1,192 @@
[gd_scene load_steps=21 format=3 uid="uid://d0fyuvesb472p"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_25rmy"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_first_person_4.4.gd" id="2_7nd2u"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/phantom_camera_noise_3d.gd" id="3_t4fhv"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="4_tnm2f"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="5_4webr"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="6_dmm4a"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd" id="7_2vtho"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="8_bw5oq"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="9_jpkpr"]
[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="10_8pr3k"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="11_vp57v"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_yvgu3"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vc6km"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_lsrh7"]
radius = 0.269454
[sub_resource type="Resource" id="Resource_lhgur"]
script = ExtResource("5_4webr")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_ghjuj"]
script = ExtResource("6_dmm4a")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_2l4w0"]
script = ExtResource("3_t4fhv")
amplitude = 40.0
frequency = 0.2
randomize_noise_seed = 0
noise_seed = 0
rotational_noise = true
positional_noise = false
rotational_multiplier_x = 1.0
rotational_multiplier_y = 1.0
rotational_multiplier_z = 0.0
positional_multiplier_x = 0.1
positional_multiplier_y = 0.1
positional_multiplier_z = 0.1
[sub_resource type="Resource" id="Resource_6tnhy"]
script = ExtResource("3_t4fhv")
amplitude = 10.0
frequency = 20.0
randomize_noise_seed = 0
noise_seed = 928
rotational_noise = true
positional_noise = false
rotational_multiplier_x = 1.0
rotational_multiplier_y = 1.0
rotational_multiplier_z = 0.1
positional_multiplier_x = 1.0
positional_multiplier_y = 1.0
positional_multiplier_z = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qi01t"]
albedo_texture = ExtResource("9_jpkpr")
uv1_triplanar = true
uv1_world_triplanar = true
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ey47a"]
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
border_width_right = 4
border_width_bottom = 4
border_color = Color(0.227451, 0.72549, 0.603922, 1)
corner_radius_bottom_right = 20
expand_margin_bottom = 6.0
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-0.0642313, 0.122871, 0.990342, 0, 0.992391, -0.123126, -0.997935, -0.00790852, -0.0637426, -16.46, 0.503767, 4.249)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_25rmy")
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -16.46, 0.503767, 4.249)
script = ExtResource("2_7nd2u")
[node name="PlayerVisual" type="MeshInstance3D" parent="PlayerCharacterBody3D"]
unique_name_in_owner = true
mesh = SubResource("CapsuleMesh_yvgu3")
surface_material_override/0 = SubResource("StandardMaterial3D_vc6km")
[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_lsrh7")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_lsrh7")
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.00441533, 0, 0.999915, 0, 0.999995, 0, -0.999923, 0, 0.00441529, -16.46, 0.503767, 4.249)
top_level = true
script = ExtResource("4_tnm2f")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_lhgur")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ghjuj")
noise = SubResource("Resource_2l4w0")
noise_emitter_layer = 1
[node name="PlayerPhantomCameraNoiseEmitter3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37085e-08, 0, 0.999925, 0, 0.999995, 0, -0.999933, 0, -4.37081e-08, -16.46, 0.503767, 4.249)
script = ExtResource("7_2vtho")
noise = SubResource("Resource_6tnhy")
duration = 0.1
decay_time = 0.1
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("8_bw5oq")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 2.5)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.83707, 6.53866, -1.80739)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -38.9392, 6.53866, -1.80739)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 6)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="EmitterTip" type="Panel" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = -1
anchor_right = 0.3
anchor_bottom = 0.1
theme_override_styles/panel = SubResource("StyleBoxFlat_ey47a")
[node name="Guidance" type="RichTextLabel" parent="EmitterTip"]
layout_mode = 1
anchors_preset = -1
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
size_flags_vertical = 8
theme_override_fonts/normal_font = ExtResource("10_8pr3k")
theme_override_fonts/bold_font = ExtResource("11_vp57v")
theme_override_font_sizes/normal_font_size = 18
theme_override_font_sizes/bold_font_size = 24
bbcode_enabled = true
text = "[center]Press [b]Q[/b] to trigger Noise Emitter"
fit_content = true

View File

@@ -0,0 +1,286 @@
[gd_scene load_steps=23 format=3 uid="uid://cvnbgtbaxwj5p"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="1_d55xf"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="2_d1opf"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_4whss"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_8ap1e"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_1sgnu"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="6_lr46m"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="7_istoq"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="7_x1jex"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="8_qepee"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="9_ptb3h"]
[sub_resource type="Resource" id="Resource_0dtvs"]
script = ExtResource("5_1sgnu")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_j6fha"]
size = Vector3(5, 0.1, 4)
[sub_resource type="BoxMesh" id="BoxMesh_xg4en"]
size = Vector3(5, 0.1, 4)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2dct5"]
transparency = 1
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
[sub_resource type="Resource" id="Resource_v8ndi"]
script = ExtResource("8_qepee")
duration = 0.6
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_kmep1"]
script = ExtResource("5_1sgnu")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_uxg44"]
script = ExtResource("8_qepee")
duration = 0.3
transition = 1
ease = 2
[sub_resource type="Resource" id="Resource_eu3bc"]
script = ExtResource("5_1sgnu")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_0nci0"]
script = ExtResource("8_qepee")
duration = 0.3
transition = 8
ease = 2
[sub_resource type="Resource" id="Resource_u0lff"]
script = ExtResource("5_1sgnu")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_50m5g"]
script = ExtResource("8_qepee")
duration = 1.2
transition = 10
ease = 2
[sub_resource type="Resource" id="Resource_rexf8"]
script = ExtResource("5_1sgnu")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[node name="Root" type="Node3D"]
[node name="Environment" type="Node" parent="."]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Floor" parent="Environment" instance=ExtResource("1_d55xf")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.083587, 2.507, 4.05493)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("2_d1opf")
[node name="------------------" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
top_level = true
script = ExtResource("3_4whss")
priority = 3
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D2")
tween_resource = ExtResource("4_8ap1e")
tween_on_load = false
camera_3d_resource = SubResource("Resource_0dtvs")
follow_offset = Vector3(0, 2, 2)
follow_damping = true
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("6_lr46m")]
script = ExtResource("7_x1jex")
[node name="-------------------" type="Node" parent="."]
[node name="Tweening Example" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.97)
[node name="Linear" type="Node3D" parent="Tweening Example"]
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Linear" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("7_istoq")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Linear"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
script = ExtResource("3_4whss")
tween_resource = SubResource("Resource_v8ndi")
camera_3d_resource = SubResource("Resource_kmep1")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Linear"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
text = "Transition Type:
Linear
Duration:
0.6s"
font = ExtResource("9_ptb3h")
font_size = 48
[node name="Sine" type="Node3D" parent="Tweening Example"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.4)
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Sine" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("7_istoq")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Sine"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
script = ExtResource("3_4whss")
tween_resource = SubResource("Resource_uxg44")
camera_3d_resource = SubResource("Resource_eu3bc")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Sine"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
text = "Transition Type:
Sine
Duration:
0.3s"
font = ExtResource("9_ptb3h")
font_size = 72
[node name="Circ" type="Node3D" parent="Tweening Example"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -14.1)
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Circ" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("7_istoq")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Circ"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
script = ExtResource("3_4whss")
tween_resource = SubResource("Resource_0nci0")
camera_3d_resource = SubResource("Resource_u0lff")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Circ"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
text = "Transition Type:
Circ
Duration:
0.3s"
font = ExtResource("9_ptb3h")
font_size = 72
[node name="Back" type="Node3D" parent="Tweening Example"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21)
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Back" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("7_istoq")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Back/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Back/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Back"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, -0.8, 4.8, 3.3)
script = ExtResource("3_4whss")
tween_resource = SubResource("Resource_50m5g")
camera_3d_resource = SubResource("Resource_rexf8")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Back"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
text = "Transition Type:
Back
Duration:
1.2s"
font = ExtResource("9_ptb3h")
font_size = 48

View File

@@ -0,0 +1,31 @@
[gd_scene load_steps=5 format=3 uid="uid://cb83in8f0tbb1"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="1_tm04f"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8efyg"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2cfaw"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r3ldp"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[node name="PlayerCharacterBody3D2" type="CharacterBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.083587, 0.507, 2.05493)
script = ExtResource("1_tm04f")
metadata/_edit_group_ = true
[node name="PlayerArea3D" type="Area3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
shape = SubResource("CapsuleShape3D_8efyg")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_8efyg")
[node name="PlayerVisual" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="PlayerModel" type="MeshInstance3D" parent="PlayerVisual"]
mesh = SubResource("CapsuleMesh_2cfaw")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_r3ldp")

View File

@@ -0,0 +1,43 @@
[gd_scene load_steps=6 format=3 uid="uid://bhd1kwv2fwj1y"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person.gd" id="1_5s24o"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_s61dn"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_47f0o"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mv4do"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="PrismMesh" id="PrismMesh_wg1x3"]
size = Vector3(0.5, 0.5, 0.3)
[node name="PlayerCharacterBody3D" type="CharacterBody3D"]
transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, -0.0163251)
collision_layer = 2
script = ExtResource("1_5s24o")
metadata/_edit_group_ = true
[node name="PlayerArea3D" type="Area3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
shape = SubResource("CapsuleShape3D_s61dn")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_s61dn")
[node name="PlayerVisual" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerVisual"]
transform = Transform3D(1, 0, 0, 0, 1, 4.65661e-10, 0, 0, 1, 0, 0, 0)
mesh = SubResource("CapsuleMesh_47f0o")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")
[node name="PlayerDirection" type="MeshInstance3D" parent="PlayerVisual"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, -9.31323e-10, 1, 4.65661e-10, 2.98023e-08, 0, 1, -0.0156226, 1.08631, 0)
mesh = SubResource("PrismMesh_wg1x3")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")

View File

@@ -0,0 +1,407 @@
[gd_scene load_steps=40 format=3 uid="uid://ci12ytew5vwty"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_wn7ww"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/npc.gd" id="2_2n1da"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_e7gxt"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_tvx5n"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_y3dy8"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="3_f5qrw"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_a27nb"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_m2vbn"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="4_moad5"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="7_jitt8"]
[sub_resource type="Resource" id="Resource_jtk1d"]
script = ExtResource("4_m2vbn")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_o161n"]
script = ExtResource("4_m2vbn")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxMesh" id="BoxMesh_7tjw4"]
size = Vector3(2, 0.5, 4)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hpllm"]
transparency = 1
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
[sub_resource type="BoxShape3D" id="BoxShape3D_65o6h"]
size = Vector3(2, 0.5, 4)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tpc7d"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_g0eml"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v5iy7"]
albedo_color = Color(0.988235, 0.478431, 0.905882, 1)
[sub_resource type="Resource" id="Resource_tpvee"]
script = ExtResource("7_jitt8")
duration = 0.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_bxbnv"]
script = ExtResource("4_m2vbn")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_wcrbb"]
size = Vector3(6.8, 0.1, 5.4)
[sub_resource type="Resource" id="Resource_7ih0k"]
script = ExtResource("7_jitt8")
duration = 0.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_4iyps"]
script = ExtResource("4_m2vbn")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_ctyr8"]
size = Vector3(7.4, 0.1, 3.6)
[sub_resource type="Resource" id="Resource_x5y0u"]
script = ExtResource("7_jitt8")
duration = 0.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_pgiyx"]
script = ExtResource("4_m2vbn")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_ua072"]
size = Vector3(6.8, 0.1, 3.6)
[sub_resource type="BoxMesh" id="BoxMesh_ugc3s"]
size = Vector3(1, 1, 2)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_68thd"]
albedo_color = Color(0.34902, 0.862745, 0.854902, 1)
[sub_resource type="BoxMesh" id="BoxMesh_wphly"]
size = Vector3(1, 0.5, 1)
[sub_resource type="BoxMesh" id="BoxMesh_gyp5s"]
size = Vector3(20, 40, 30)
[sub_resource type="BoxShape3D" id="BoxShape3D_lfaqs"]
size = Vector3(20, 40, 30)
[sub_resource type="BoxMesh" id="BoxMesh_n70lt"]
size = Vector3(14, 40, 6)
[sub_resource type="BoxShape3D" id="BoxShape3D_jxmqm"]
size = Vector3(14, 40, 6)
[sub_resource type="BoxMesh" id="BoxMesh_x0tgm"]
size = Vector3(8, 40, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_t67ef"]
size = Vector3(50, 40, 1)
[sub_resource type="BoxMesh" id="BoxMesh_rmslh"]
size = Vector3(0.5, 6, 13.5)
[sub_resource type="BoxMesh" id="BoxMesh_242ij"]
size = Vector3(2, 3, 3)
[sub_resource type="BoxMesh" id="BoxMesh_niuda"]
size = Vector3(8, 6, 0.5)
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.948876, 0.315649, 0, -0.315649, 0.948876, -2.53871, 2, 9.76232)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_wn7ww")
[node name="PlayerGroup" type="Node" parent="."]
[node name="PlayerCharacterBody3D" parent="PlayerGroup" instance=ExtResource("2_tvx5n")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.53871, 0.5, 7.26232)
[node name="MovementInstructionsLabel" type="Label3D" parent="PlayerGroup"]
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -2.47682, -0.0708016, 7.93048)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("2_e7gxt")
font_size = 48
[node name="PlayerPhantomCamera3D" type="Node3D" parent="PlayerGroup" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
top_level = true
script = ExtResource("2_y3dy8")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = ExtResource("4_a27nb")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jtk1d")
follow_offset = Vector3(0, 1.5, 2.5)
follow_damping = true
[node name="NPCGroup" type="Node" parent="."]
[node name="NPCPhantomCamera3D" type="Node3D" parent="NPCGroup"]
unique_name_in_owner = true
transform = Transform3D(0.616596, -0.109786, 0.779587, -2.23517e-08, 0.990229, 0.13945, -0.78728, -0.0859841, 0.610571, -2.98802, 1.50739, 1.19719)
script = ExtResource("2_y3dy8")
tween_resource = ExtResource("4_a27nb")
camera_3d_resource = SubResource("Resource_o161n")
[node name="NPCDescriptionLabel" type="Label3D" parent="NPCGroup"]
transform = Transform3D(1, 0, 0, 0, 0.866026, 0.5, 0, -0.5, 0.866025, -3.04693, 0.367287, 0.953757)
text = "Input Example"
font = ExtResource("2_e7gxt")
[node name="NPCDialogueExampleLabel" type="Label3D" parent="NPCGroup"]
unique_name_in_owner = true
transform = Transform3D(1, 4.54671e-10, 1.65487e-10, 4.25644e-10, 0.939693, 0.34202, 0, -0.34202, 0.939693, -4.46738, 1.58641, -0.253679)
modulate = Color(1, 0.603922, 0.254902, 1)
text = "Press [ F ] to change camera"
font = ExtResource("2_e7gxt")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="NPCGroup"]
transform = Transform3D(0.819152, 4.83851e-10, -0.573576, -3.92481e-09, 1, -6.3473e-09, 0.573576, 7.45058e-09, 0.819152, -3.46138, -0.4, 0.875321)
mesh = SubResource("BoxMesh_7tjw4")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_hpllm")
metadata/_edit_group_ = true
[node name="NPCInteractionArea3D" type="Area3D" parent="NPCGroup/NPCInteractionZoneMesh"]
unique_name_in_owner = true
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
monitorable = false
[node name="NPCInterationCollisionShape3D" type="CollisionShape3D" parent="NPCGroup/NPCInteractionZoneMesh/NPCInteractionArea3D"]
shape = SubResource("BoxShape3D_65o6h")
[node name="NPC" type="StaticBody3D" parent="NPCGroup"]
transform = Transform3D(1, 4.83851e-10, 0, 4.25644e-10, 1, -7.45058e-09, 0, 7.45058e-09, 1, -4.56338, 0.5, -0.272679)
script = ExtResource("2_2n1da")
[node name="PlayerCollisionShape3D2" type="CollisionShape3D" parent="NPCGroup/NPC"]
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
shape = SubResource("CapsuleShape3D_tpc7d")
[node name="NPCMesh" type="MeshInstance3D" parent="NPCGroup/NPC"]
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
mesh = SubResource("CapsuleMesh_g0eml")
skeleton = NodePath("../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_v5iy7")
[node name="MoveToLocation" type="Node3D" parent="NPCGroup"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.70084, 0.5, 0.962891)
[node name="FixedCameraTriggerZone" type="Node" parent="."]
[node name="FixedCameraLabel" type="Label3D" parent="FixedCameraTriggerZone"]
unique_name_in_owner = true
transform = Transform3D(0.939693, 0.280167, -0.196175, 1.49012e-08, 0.573577, 0.819152, 0.34202, -0.769751, 0.538986, -0.538716, -0.247626, 3.13456)
text = "Fixed Camera
Example"
font = ExtResource("2_e7gxt")
[node name="NorthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(0.38357, -0.555836, 0.737507, -0.105898, 0.766851, 0.633027, -0.917417, -0.320912, 0.235279, 6.89638, 4.73986, 0.115512)
script = ExtResource("2_y3dy8")
tween_resource = SubResource("Resource_tpvee")
camera_3d_resource = SubResource("Resource_bxbnv")
[node name="NorthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, -0.9)
priority = 5
script = ExtResource("4_moad5")
area_pcam = NodePath("../NorthRoomPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/NorthRoomTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, -0.4)
shape = SubResource("BoxShape3D_wcrbb")
[node name="EntryRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(0.258818, -0.482963, 0.836515, 1.3027e-15, 0.866025, 0.499999, -0.965924, -0.129409, 0.224143, 6.69741, 4.73364, 4.02374)
script = ExtResource("2_y3dy8")
tween_resource = SubResource("Resource_7ih0k")
camera_3d_resource = SubResource("Resource_4iyps")
[node name="EntryRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.00003, -0.454982, 3.00572)
priority = 5
script = ExtResource("4_moad5")
area_pcam = NodePath("../EntryRoomPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/EntryRoomTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0.2)
shape = SubResource("BoxShape3D_ctyr8")
[node name="SouthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(-0.766043, -0.492403, 0.413175, 0, 0.642787, 0.766043, -0.642786, 0.586825, -0.492403, 6.89741, 4.73364, 5.62374)
script = ExtResource("2_y3dy8")
tween_resource = SubResource("Resource_x5y0u")
camera_3d_resource = SubResource("Resource_pgiyx")
[node name="SouthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, 6.7)
priority = 5
script = ExtResource("4_moad5")
area_pcam = NodePath("../SouthRoomPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/SouthRoomTrigger"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, 0.1)
shape = SubResource("BoxShape3D_ua072")
[node name="CSGMesh3D" type="CSGMesh3D" parent="FixedCameraTriggerZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.14238, 1.82571, 2.88655)
mesh = SubResource("BoxMesh_ugc3s")
material = SubResource("StandardMaterial3D_68thd")
[node name="CSGMesh3D2" type="CSGMesh3D" parent="FixedCameraTriggerZone/CSGMesh3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00192642, -0.0120339, 0.00494432)
operation = 2
mesh = SubResource("BoxMesh_wphly")
material = SubResource("StandardMaterial3D_68thd")
[node name="Environment" type="Node" parent="."]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Environment" type="Node3D" parent="Environment"]
[node name="Floor" parent="Environment/Environment" instance=ExtResource("3_f5qrw")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="West Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0.5, 0)
metadata/_edit_group_ = true
metadata/_edit_lock_ = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/West Wall"]
mesh = SubResource("BoxMesh_gyp5s")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/West Wall"]
shape = SubResource("BoxShape3D_lfaqs")
[node name="East Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.999, 0.502, 0)
metadata/_edit_group_ = true
metadata/_edit_lock_ = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/East Wall"]
mesh = SubResource("BoxMesh_gyp5s")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/East Wall"]
shape = SubResource("BoxShape3D_lfaqs")
[node name="North Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -6.90828)
metadata/_edit_group_ = true
metadata/_edit_lock_ = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/North Wall"]
mesh = SubResource("BoxMesh_n70lt")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/North Wall"]
shape = SubResource("BoxShape3D_jxmqm")
[node name="South Wall" type="StaticBody3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 0.5, 9.087)
metadata/_edit_group_ = true
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Environment/Environment/South Wall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0)
mesh = SubResource("BoxMesh_x0tgm")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/South Wall"]
shape = SubResource("BoxShape3D_t67ef")
[node name="FixedCamOuterWall" type="CSGMesh3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 2)
use_collision = true
mesh = SubResource("BoxMesh_rmslh")
[node name="FixedCamOuterDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamOuterWall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 1)
operation = 2
mesh = SubResource("BoxMesh_242ij")
[node name="FixedCamNorthWall" type="CSGMesh3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 1)
use_collision = true
mesh = SubResource("BoxMesh_niuda")
[node name="FixedCamNorthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamNorthWall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0)
operation = 2
mesh = SubResource("BoxMesh_242ij")
[node name="FixedCamSouthWall" type="CSGMesh3D" parent="Environment/Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 5.1)
use_collision = true
mesh = SubResource("BoxMesh_niuda")
[node name="FixedCamSouthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamSouthWall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.50541, 1.19209e-07)
operation = 2
mesh = SubResource("BoxMesh_242ij")
[editable path="PlayerGroup/PlayerCharacterBody3D"]

View File

@@ -0,0 +1,155 @@
[gd_scene load_steps=10 format=3 uid="uid://c4llb3gsbfv1a"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_7824u"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_g1bv4"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_420vh"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_oqbub"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_t4fso"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_c0upu"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_f2w3x"]
[sub_resource type="Resource" id="Resource_wg1pr"]
script = ExtResource("4_oqbub")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_c0upu")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.793353, 0.608762, 0, -0.608762, 0.793353, 0.083587, 2.94168, 5.22787)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_7824u")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
top_level = true
script = ExtResource("2_g1bv4")
follow_mode = 5
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
tween_resource = ExtResource("3_420vh")
tween_on_load = false
camera_3d_resource = SubResource("Resource_wg1pr")
follow_damping = true
follow_distance = 4.0
dead_zone_width = 0.161
dead_zone_height = 0.386
show_viewfinder_in_play = true
spring_length = 4.0
[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("5_f2w3x")]
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_t4fso")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.636134, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.54597, -0.540694, -3.39517)
use_collision = true
radius = 1.53269
height = 2.5036
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.64877, -1.50101, 1.22863)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.4732, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.40027, -1.69814, 3.36997)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.13768, -0.599204, -1.04651)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7976, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.84078, -0.497663, 4.44352)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.88916, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.83837, -0.241718, 7.14677)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.34377, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.9834, 0.138478, -1.89037)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.38147, 0.0440434, 8.36617)
use_collision = true
size = Vector3(4.57784, 1.08809, 3.11285)
[editable path="Player/PlayerCharacterBody3D2"]

View File

@@ -0,0 +1,207 @@
[gd_scene load_steps=14 format=3 uid="uid://dw2yflu7up2rr"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_pmeux"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_q1ygp"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_hpix1"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_8qqha"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_evdoo"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_vqgn5"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_wr3bq"]
[sub_resource type="Resource" id="Resource_ucp3e"]
script = ExtResource("3_hpix1")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_ab013"]
script = ExtResource("4_evdoo")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_wr3bq")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Node3D" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.638767, 0.7694, 0, -0.7694, 0.638768, 0, 6.39, 7)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_pmeux")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, 0, 6.39, 7)
top_level = true
script = ExtResource("2_q1ygp")
priority = 5
follow_mode = 1
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_ucp3e")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ab013")
follow_damping = true
follow_damping_value = Vector3(0.3, 0.3, 0.3)
[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_vqgn5")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.39, 7)
enable_gravity = false
[node name="PlayerVisual" parent="Player/PlayerCharacterBody3D" index="2"]
visible = false
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.04486, 0.519002, -1.52506)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.51494, 0.519, 4.06618)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_8qqha")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.62737, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.9378, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.58617, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.774, 0.201103, 2.71259)
use_collision = true
radius = 1.41311
height = 1.40221
sides = 32
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.40488, 0.201101, 11.6804)
use_collision = true
radius = 2.21673
height = 7.88261
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.20971, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9771, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.555532, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.0611, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.21187, -1.90735e-06, 0.346393)
use_collision = true
inner_radius = 1.3
outer_radius = 2.0
sides = 32
ring_sides = 18
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9283, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.49828, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.15267, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.3427, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.08027, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.7748, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1473, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)
[editable path="Player/PlayerCharacterBody3D"]

View File

@@ -0,0 +1,179 @@
[gd_scene load_steps=13 format=3 uid="uid://dbfiy6svpcqap"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="1_r00ve"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_pi7mp"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_wnlkq"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_1eb12"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="3_a5igg"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="3_wr1tj"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_70gws"]
[sub_resource type="Resource" id="Resource_1iman"]
script = ExtResource("5_70gws")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("3_a5igg")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Node3D" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -7.26116, 5.72974, 12.279)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("3_wr1tj")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("2_wnlkq")]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_targets")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
top_level = true
script = ExtResource("2_pi7mp")
priority = 5
follow_mode = 3
follow_targets = [NodePath("../PlayerCharacterBody3D2"), NodePath("../../NPCs/PlayerMeshInstance3D"), NodePath("../../NPCs/PlayerMeshInstance3D2")]
tween_resource = ExtResource("3_1eb12")
tween_on_load = false
camera_3d_resource = SubResource("Resource_1iman")
follow_damping = true
follow_distance = 5.0
auto_follow_distance = true
auto_follow_distance_min = 5.0
auto_follow_distance_max = 15.0
auto_follow_distance_divisor = 20.0
spring_length = 5.0
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.6059, 0.519002, 0.128472)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.0461, 0.519, 0.249913)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("1_r00ve")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.9141, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.6099, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.95333, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.4682, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.90455, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.31901, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7985, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.1236, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)
[editable path="Player/PlayerCharacterBody3D2"]

View File

@@ -0,0 +1,241 @@
[gd_scene load_steps=24 format=3 uid="uid://dxx7ngi0emt8h"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_lm5n8"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_bd7x3"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_od2r4"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_dfdlo"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_hni7n"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="4_lfwkm"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/path_follow.gd" id="5_vdqkm"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_vms5c"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="6_obo83"]
[sub_resource type="Resource" id="Resource_ofv2c"]
script = ExtResource("4_hni7n")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_01tho"]
script = ExtResource("4_lfwkm")
duration = 1.2
transition = 3
ease = 2
[sub_resource type="Resource" id="Resource_syh5m"]
script = ExtResource("4_hni7n")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Curve3D" id="Curve3D_b33df"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_aovgi"]
size = Vector3(6, 0.1, 10)
[sub_resource type="BoxMesh" id="BoxMesh_0hdeh"]
size = Vector3(6, 0.1, 10)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fsm1b"]
transparency = 1
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
[sub_resource type="Resource" id="Resource_xci4c"]
script = ExtResource("4_hni7n")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Curve3D" id="Curve3D_8uw2x"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_ctnqu"]
size = Vector3(12, 0.1, 4)
[sub_resource type="BoxMesh" id="BoxMesh_f6dp8"]
size = Vector3(12, 0.1, 4)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gwnkj"]
transparency = 1
albedo_color = Color(0.568403, 0.988235, 0.762724, 0.0901961)
[sub_resource type="BoxMesh" id="BoxMesh_7l3dh"]
[sub_resource type="BoxMesh" id="BoxMesh_as6ok"]
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.999996, -0.00216283, 0.00184472, 0, 0.648938, 0.760841, -0.00284268, -0.760838, 0.648936, 0, 2.507, 1.5)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_lm5n8")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
top_level = true
script = ExtResource("3_bd7x3")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
tween_resource = ExtResource("3_od2r4")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ofv2c")
follow_offset = Vector3(0, 2, 1.5)
follow_damping = true
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("5_vms5c")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.507, 0)
[node name="Paths" type="Node" parent="."]
[node name="PathPhantomCamera3D" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, -0.31028, 7.9199, -1.60976)
top_level = true
script = ExtResource("3_bd7x3")
priority = 2
follow_mode = 4
follow_target = NodePath("../../PlayerCharacterBody3D2/PlayerVisual")
follow_path = NodePath("../FollowPath")
tween_resource = SubResource("Resource_01tho")
camera_3d_resource = SubResource("Resource_syh5m")
follow_damping = true
[node name="FollowPath" type="Path3D" parent="Paths"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.31028, 7.9199, -1.60976)
curve = SubResource("Curve3D_b33df")
[node name="StraightPathFollowTrigger" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, -0.45, -6.73666)
priority = 5
script = ExtResource("5_vdqkm")
path_pcam = NodePath("../PathPhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger"]
shape = SubResource("BoxShape3D_aovgi")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger/CollisionShape3D"]
mesh = SubResource("BoxMesh_0hdeh")
skeleton = NodePath("../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_fsm1b")
metadata/_edit_group_ = true
[node name="PathPhantomCamera3D2" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 7.9199, -13.4572)
top_level = true
visible = false
script = ExtResource("3_bd7x3")
priority = 2
follow_mode = 4
follow_target = NodePath("../../PlayerCharacterBody3D2/PlayerVisual")
follow_path = NodePath("../FollowPath2")
tween_resource = SubResource("Resource_01tho")
camera_3d_resource = SubResource("Resource_xci4c")
follow_damping = true
follow_damping_value = Vector3(0.6, 0.1, 0.1)
[node name="FollowPath2" type="Path3D" parent="Paths"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.97141, 7.9199, -13.4572)
curve = SubResource("Curve3D_8uw2x")
[node name="StraightPathFollowTrigger2" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, 0, -13.7367)
priority = 5
script = ExtResource("5_vdqkm")
path_pcam = NodePath("../PathPhantomCamera3D2")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger2"]
shape = SubResource("BoxShape3D_ctnqu")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger2/CollisionShape3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.45, 0)
mesh = SubResource("BoxMesh_f6dp8")
skeleton = NodePath("../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_gwnkj")
metadata/_edit_group_ = true
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_dfdlo")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Floor3" parent="Environment" instance=ExtResource("4_dfdlo")]
transform = Transform3D(6, 0, 0, 0, 1, 0, 0, 0, 1, -0.44204, 0, 1.76334)
[node name="Floor2" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, -0.516667, 1, -6.5)
[node name="Floor5" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, 0.65, 1, -6.5)
[node name="Floor4" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(2, 0, 0, 0, 3, 0, 0, 0, 1, 0.0666667, 1, -18)
[node name="Floor6" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, -0.766667, 1, -13)
mesh = SubResource("BoxMesh_7l3dh")
[node name="Floor8" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, -1.01667, 1, -15.5)
mesh = SubResource("BoxMesh_as6ok")
[node name="Floor9" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, 1.15, 1, -15.5)
mesh = SubResource("BoxMesh_as6ok")
[node name="Floor7" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, 0.9, 1, -13)
mesh = SubResource("BoxMesh_7l3dh")
[node name="NPCDescriptionLabel" type="Label3D" parent="Environment"]
transform = Transform3D(5.21541e-08, -1, -7.7486e-07, -1.10675e-15, 2.23517e-07, 0.999999, -0.999999, -7.45058e-08, -5.68829e-14, -3.47306, 2.59595, -5.51755)
text = "Camera follows player while confined to a Path3D"
font = ExtResource("6_obo83")
font_size = 64
[node name="MovementInstructionsLabel" type="Label3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.02174, -0.455369, 0.570585)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("6_obo83")
font_size = 48
[editable path="PlayerCharacterBody3D2"]

View File

@@ -0,0 +1,162 @@
[gd_scene load_steps=11 format=3 uid="uid://buglvjwpn85ny"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_3tok8"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_grjck"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_j3f4l"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_4u2y6"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_sielv"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_1tybo"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_7ywxt"]
[sub_resource type="Resource" id="Resource_28vpp"]
script = ExtResource("3_j3f4l")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_axopo"]
script = ExtResource("4_sielv")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_1tybo")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Node3D2" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -13.2122, 2.5, 10.4016)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_3tok8")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.2122, 2.5, 10.4016)
top_level = true
script = ExtResource("2_grjck")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_28vpp")
tween_on_load = false
camera_3d_resource = SubResource("Resource_axopo")
follow_offset = Vector3(0, 2, 2)
follow_damping = true
[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_7ywxt")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.2122, 0.5, 8.40162)
[node name="NPCs" type="Node" parent="."]
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_4u2y6")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.8332, -0.540694, -3.39517)
use_collision = true
radius = 1.53269
height = 2.5036
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.936, -1.50101, 1.22863)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.6875, -1.69814, 3.36997)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.14955, -0.599204, -1.04651)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.44645, -0.497663, 4.44352)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.1256, 0.335247, 7.14677)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.30382, 0.138478, -1.89037)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.04727, 0.0440434, 8.36617)
use_collision = true
size = Vector3(4.57784, 1.08809, 3.11285)
[editable path="Player/PlayerCharacterBody3D"]

View File

@@ -0,0 +1,216 @@
[gd_scene load_steps=21 format=3 uid="uid://5pjtxclcnx4f"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="1_s26cy"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_m2d6w"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="3_l7kg8"]
[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="4_qcyfd"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_8von1"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_o1fj6"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_amcmx"]
[ext_resource type="Texture2D" uid="uid://c3mskbmvnpwux" path="res://addons/phantom_camera/examples/textures/3D/target.png" id="8_rjcgw"]
[sub_resource type="Resource" id="Resource_8fhct"]
script = ExtResource("2_m2d6w")
duration = 0.3
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_7m0fv"]
script = ExtResource("3_l7kg8")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_i42vj"]
dof_blur_far_enabled = true
dof_blur_far_distance = 5.99
dof_blur_near_enabled = true
dof_blur_near_distance = 0.05
dof_blur_amount = 0.21
[sub_resource type="Resource" id="Resource_e7t18"]
script = ExtResource("2_m2d6w")
duration = 0.4
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_jogxh"]
script = ExtResource("3_l7kg8")
cull_mask = 1048575
h_offset = 1.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_fvhx5"]
dof_blur_far_enabled = true
dof_blur_far_distance = 31.1
dof_blur_near_enabled = true
dof_blur_near_distance = 1.79
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_724n8"]
dof_blur_far_enabled = true
dof_blur_far_distance = 5.99
dof_blur_near_enabled = true
dof_blur_near_distance = 0.05
dof_blur_amount = 0.21
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
size = Vector3(1, 10, 20)
[sub_resource type="Resource" id="Resource_afrr1"]
script = ExtResource("2_m2d6w")
duration = 0.6
transition = 3
ease = 1
[sub_resource type="Resource" id="Resource_unpfd"]
script = ExtResource("3_l7kg8")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CylinderMesh" id="CylinderMesh_sm466"]
top_radius = 1.51
height = 0.2
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hp48l"]
transparency = 1
albedo_texture = ExtResource("8_rjcgw")
uv1_scale = Vector3(1.91, 1.91, 1.91)
uv1_offset = Vector3(0.025, -0.927, 0)
[node name="Root" type="Node3D"]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 9.63713)
script = ExtResource("1_s26cy")
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_8fhct")
tween_on_load = false
camera_3d_resource = SubResource("Resource_7m0fv")
attributes = SubResource("CameraAttributesPractical_i42vj")
follow_damping = true
follow_distance = 3.5
spring_length = 3.5
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.953716, -0.0418501, 0.297778, 0, 0.990266, 0.139173, -0.300705, -0.132731, 0.944432, 0.427258, 1.68564, 7.6237)
script = ExtResource("1_s26cy")
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_e7t18")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jogxh")
attributes = SubResource("CameraAttributesPractical_fvhx5")
follow_offset = Vector3(0, 0.97, -0.399)
follow_damping_value = Vector3(0, 0, 0)
follow_distance = 1.5
spring_length = 1.5
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("4_qcyfd")]
unique_name_in_owner = true
transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, 6.60605)
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25688, 9.63713)
attributes = SubResource("CameraAttributesPractical_724n8")
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("5_8von1")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall2" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall3" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall4" parent="Environment" instance=ExtResource("6_o1fj6")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
script = ExtResource("1_s26cy")
tween_resource = SubResource("Resource_afrr1")
camera_3d_resource = SubResource("Resource_unpfd")
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
visible = false
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("7_amcmx")
font_size = 48
[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
visible = false
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Right Mouse Click] to \"aim\""
font = ExtResource("7_amcmx")
font_size = 48
[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
visible = false
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Space] to toggle PCam"
font = ExtResource("7_amcmx")
font_size = 48
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0.260217, 1.60477, -9.07797)
mesh = SubResource("CylinderMesh_sm466")
surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 0.0525861, 1.60477, 9.98156)
mesh = SubResource("CylinderMesh_sm466")
surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
[editable path="PlayerCharacterBody3D"]

View File

@@ -0,0 +1,185 @@
[gd_scene load_steps=16 format=3 uid="uid://4i5csj0s34nb"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_47xf2"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_whx47"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_lii5s"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_jt2lp"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_oc4q1"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_kg7u1"]
[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="7_kut0u"]
[sub_resource type="Resource" id="Resource_8fhct"]
script = ExtResource("2_47xf2")
duration = 0.3
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_7m0fv"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_e7t18"]
script = ExtResource("2_47xf2")
duration = 0.4
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_jogxh"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 1.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
size = Vector3(1, 10, 20)
[sub_resource type="BoxMesh" id="BoxMesh_bj3re"]
size = Vector3(1, 7, 7)
[sub_resource type="Resource" id="Resource_afrr1"]
script = ExtResource("2_47xf2")
duration = 0.6
transition = 3
ease = 1
[sub_resource type="Resource" id="Resource_ioijp"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[node name="Root" type="Node3D"]
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
unique_name_in_owner = true
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866023, 0.499997, 0, -0.499999, 0.866021, -0.0194088, 2.25687, 3.01475)
script = ExtResource("2_whx47")
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_8fhct")
tween_on_load = false
camera_3d_resource = SubResource("Resource_7m0fv")
follow_damping = true
follow_distance = 3.5
spring_length = 3.5
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.953716, -0.0104945, 0.300522, 0, 0.99939, 0.0348995, -0.300706, -0.0332842, 0.953135, 0.431374, 1.35923, 1.01438)
script = ExtResource("2_whx47")
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_e7t18")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jogxh")
follow_offset = Vector3(0, 0.8, -0.399)
follow_distance = 1.5
spring_length = 1.5
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25687, 3.01475)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("5_oc4q1")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall5" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.133, 3, -6.5)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall6" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, 0)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall7" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 3, 0)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall2" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall3" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall4" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
script = ExtResource("2_whx47")
tween_resource = SubResource("Resource_afrr1")
camera_3d_resource = SubResource("Resource_ioijp")
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("7_kg7u1")
font_size = 48
[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Right Mouse Click] to \"aim\""
font = ExtResource("7_kg7u1")
font_size = 48
[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Space] to toggle PCam"
font = ExtResource("7_kg7u1")
font_size = 48
[editable path="PlayerCharacterBody3D"]

View File

@@ -0,0 +1,197 @@
[gd_scene load_steps=14 format=3 uid="uid://bdhrdhbux7sjg"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="1_i2pjc"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_lldvu"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_8md3q"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_dqss1"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_2i811"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_m3qpq"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_u5qhp"]
[sub_resource type="Resource" id="Resource_pwcgo"]
script = ExtResource("3_dqss1")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_ft2w3"]
script = ExtResource("4_m3qpq")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_u5qhp")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773412, -0.137901, 4.03222, 6.36446)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_lldvu")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target")]
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
script = ExtResource("2_8md3q")
priority = 10
look_at_mode = 2
look_at_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
tween_resource = SubResource("Resource_pwcgo")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ft2w3")
look_at_damping = true
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("1_i2pjc")]
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.96028, 0.519002, -1.52506)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.59952, 0.519, 4.06618)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_2i811")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.00548, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.5597, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96428, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.3959, 0.201103, 2.71259)
use_collision = true
radius = 1.41311
height = 1.40221
sides = 32
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.02677, 0.201101, 11.6804)
use_collision = true
radius = 2.21673
height = 7.88261
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.8316, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5989, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17742, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.4392, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.58998, -1.90735e-06, 0.346393)
use_collision = true
inner_radius = 1.3
outer_radius = 2.0
sides = 32
ring_sides = 18
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5502, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1202, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53078, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9646, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.70216, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.1529, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.7692, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)
[editable path="PlayerCharacterBody3D2"]

View File

@@ -0,0 +1,209 @@
[gd_scene load_steps=22 format=3 uid="uid://p7s5t3tthmo"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_ggfbg"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_dreow"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_f8fcw"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_mjtut"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/phantom_camera_noise_3d.gd" id="4_poyyk"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="5_d6uqs"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_first_person.gd" id="6_fbad7"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd" id="6_n8u0x"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="6_vpla5"]
[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="10_0thai"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="11_i8r8q"]
[sub_resource type="Resource" id="Resource_t3bgw"]
script = ExtResource("4_poyyk")
amplitude = 30.0
frequency = 2.0
randomize_noise_seed = 1
noise_seed = 0
rotational_noise = true
positional_noise = false
rotational_multiplier_x = 0.1
rotational_multiplier_y = 0.1
rotational_multiplier_z = 0.0
positional_multiplier_x = 0.0
positional_multiplier_y = 0.0
positional_multiplier_z = 0.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_yvgu3"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vc6km"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_lsrh7"]
radius = 0.269454
[sub_resource type="Resource" id="Resource_lhgur"]
script = ExtResource("3_f8fcw")
duration = 1.0
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_ghjuj"]
script = ExtResource("4_mjtut")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_2l4w0"]
script = ExtResource("4_poyyk")
amplitude = 40.0
frequency = 0.2
randomize_noise_seed = 0
noise_seed = 0
rotational_noise = true
positional_noise = false
rotational_multiplier_x = 1.0
rotational_multiplier_y = 1.0
rotational_multiplier_z = 0.0
positional_multiplier_x = 0.1
positional_multiplier_y = 0.1
positional_multiplier_z = 0.1
[sub_resource type="Resource" id="Resource_6tnhy"]
script = ExtResource("4_poyyk")
amplitude = 10.0
frequency = 4.2
randomize_noise_seed = 0
noise_seed = 928
rotational_noise = true
positional_noise = false
rotational_multiplier_x = 1.0
rotational_multiplier_y = 1.0
rotational_multiplier_z = 0.1
positional_multiplier_x = 1.0
positional_multiplier_y = 1.0
positional_multiplier_z = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qi01t"]
albedo_texture = ExtResource("6_vpla5")
uv1_triplanar = true
uv1_world_triplanar = true
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ey47a"]
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
border_width_right = 4
border_width_bottom = 4
border_color = Color(0.227451, 0.72549, 0.603922, 1)
corner_radius_bottom_right = 20
expand_margin_bottom = 6.0
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-0.0348243, 0.0245683, 0.999091, 0, 0.999698, -0.0245832, -0.999393, -0.000856094, -0.0348138, -16.46, 0.503767, 4.249)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_ggfbg")
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -16.46, 0.503767, 4.249)
script = ExtResource("6_fbad7")
run_noise = SubResource("Resource_t3bgw")
[node name="PlayerVisual" type="MeshInstance3D" parent="PlayerCharacterBody3D"]
unique_name_in_owner = true
visible = false
mesh = SubResource("CapsuleMesh_yvgu3")
surface_material_override/0 = SubResource("StandardMaterial3D_vc6km")
[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_lsrh7")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_lsrh7")
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.00441533, 0, 0.999915, 0, 0.999995, 0, -0.999923, 0, 0.00441529, -16.46, 0.503767, 4.249)
top_level = true
script = ExtResource("2_dreow")
priority = 10
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_lhgur")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ghjuj")
noise = SubResource("Resource_2l4w0")
noise_emitter_layer = 1
[node name="PlayerPhantomCameraNoiseEmitter3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37085e-08, 0, 0.999925, 0, 0.999995, 0, -0.999933, 0, -4.37081e-08, -16.46, 0.503767, 4.249)
script = ExtResource("6_n8u0x")
noise = SubResource("Resource_6tnhy")
duration = 0.1
decay_time = 0.1
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("5_d6uqs")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 2.5)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.83707, 6.53866, -1.80739)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -38.9392, 6.53866, -1.80739)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 6)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_qi01t")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="EmitterTip" type="Panel" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = -1
anchor_right = 0.3
anchor_bottom = 0.1
theme_override_styles/panel = SubResource("StyleBoxFlat_ey47a")
[node name="Guidance" type="RichTextLabel" parent="EmitterTip"]
layout_mode = 1
anchors_preset = -1
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
size_flags_vertical = 8
theme_override_fonts/normal_font = ExtResource("10_0thai")
theme_override_fonts/bold_font = ExtResource("11_i8r8q")
theme_override_font_sizes/normal_font_size = 18
theme_override_font_sizes/bold_font_size = 24
bbcode_enabled = true
text = "[center]Press [b]Q[/b] to trigger Noise Emitter"
fit_content = true

View File

@@ -0,0 +1,286 @@
[gd_scene load_steps=22 format=3 uid="uid://5xtssqdfilal"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="1_ydeog"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="2_b2yrt"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_m2w30"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_425ma"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_cn3g7"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="5_h0ouh"]
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="6_gcjyn"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="6_wup4d"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="8_60rny"]
[sub_resource type="Resource" id="Resource_0dtvs"]
script = ExtResource("5_cn3g7")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_j6fha"]
size = Vector3(5, 0.1, 4)
[sub_resource type="BoxMesh" id="BoxMesh_xg4en"]
size = Vector3(5, 0.1, 4)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2dct5"]
transparency = 1
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
[sub_resource type="Resource" id="Resource_v8ndi"]
script = ExtResource("6_wup4d")
duration = 0.6
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_kmep1"]
script = ExtResource("5_cn3g7")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_uxg44"]
script = ExtResource("6_wup4d")
duration = 0.3
transition = 1
ease = 2
[sub_resource type="Resource" id="Resource_eu3bc"]
script = ExtResource("5_cn3g7")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_0nci0"]
script = ExtResource("6_wup4d")
duration = 0.3
transition = 8
ease = 2
[sub_resource type="Resource" id="Resource_u0lff"]
script = ExtResource("5_cn3g7")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[sub_resource type="Resource" id="Resource_50m5g"]
script = ExtResource("6_wup4d")
duration = 1.2
transition = 10
ease = 2
[sub_resource type="Resource" id="Resource_rexf8"]
script = ExtResource("5_cn3g7")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
projection = 0
fov = 75.0
size = 1.0
frustum_offset = Vector2(0, 0)
near = 0.05
far = 4000.0
[node name="Root" type="Node3D"]
[node name="Environment" type="Node" parent="."]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="Floor" parent="Environment" instance=ExtResource("1_ydeog")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.083587, 2.507, 4.05493)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("2_b2yrt")
[node name="------------------" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
top_level = true
script = ExtResource("3_m2w30")
priority = 3
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
tween_resource = ExtResource("4_425ma")
tween_on_load = false
camera_3d_resource = SubResource("Resource_0dtvs")
follow_offset = Vector3(0, 2, 2)
follow_damping = true
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("6_gcjyn")]
[node name="-------------------" type="Node" parent="."]
[node name="Tweening Example" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.97)
[node name="Linear" type="Node3D" parent="Tweening Example"]
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Linear" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("5_h0ouh")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Linear"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
script = ExtResource("3_m2w30")
tween_resource = SubResource("Resource_v8ndi")
camera_3d_resource = SubResource("Resource_kmep1")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Linear"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
text = "Transition Type:
Linear
Duration:
0.6s"
font = ExtResource("8_60rny")
font_size = 48
[node name="Sine" type="Node3D" parent="Tweening Example"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.4)
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Sine" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("5_h0ouh")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Sine"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
script = ExtResource("3_m2w30")
tween_resource = SubResource("Resource_uxg44")
camera_3d_resource = SubResource("Resource_eu3bc")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Sine"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
text = "Transition Type:
Sine
Duration:
0.3s"
font = ExtResource("8_60rny")
font_size = 72
[node name="Circ" type="Node3D" parent="Tweening Example"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -14.1)
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Circ" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("5_h0ouh")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Circ"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
script = ExtResource("3_m2w30")
tween_resource = SubResource("Resource_0nci0")
camera_3d_resource = SubResource("Resource_u0lff")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Circ"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
text = "Transition Type:
Circ
Duration:
0.3s"
font = ExtResource("8_60rny")
font_size = 72
[node name="Back" type="Node3D" parent="Tweening Example"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21)
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Back" node_paths=PackedStringArray("area_pcam")]
priority = 5
script = ExtResource("5_h0ouh")
area_pcam = NodePath("../PhantomCamera3D")
metadata/_edit_group_ = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Back/EntryRoomTrigger"]
shape = SubResource("BoxShape3D_j6fha")
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Back/EntryRoomTrigger"]
mesh = SubResource("BoxMesh_xg4en")
skeleton = NodePath("../../../../..")
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
metadata/_edit_group_ = true
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Back"]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, -0.8, 4.8, 3.3)
script = ExtResource("3_m2w30")
tween_resource = SubResource("Resource_50m5g")
camera_3d_resource = SubResource("Resource_rexf8")
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Back"]
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
text = "Transition Type:
Back
Duration:
1.2s"
font = ExtResource("8_60rny")
font_size = 48
[editable path="PlayerCharacterBody3D2"]

View File

@@ -0,0 +1,31 @@
[gd_scene load_steps=5 format=3 uid="uid://bulsh7s0ibmao"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="1_6hh6c"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8efyg"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2cfaw"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r3ldp"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[node name="PlayerCharacterBody3D2" type="CharacterBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.083587, 0.507, 2.05493)
script = ExtResource("1_6hh6c")
metadata/_edit_group_ = true
[node name="PlayerArea3D" type="Area3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
shape = SubResource("CapsuleShape3D_8efyg")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_8efyg")
[node name="PlayerVisual" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="PlayerModel" type="MeshInstance3D" parent="PlayerVisual"]
mesh = SubResource("CapsuleMesh_2cfaw")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_r3ldp")

View File

@@ -0,0 +1,43 @@
[gd_scene load_steps=6 format=3 uid="uid://mskcwn1a1v6d"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person.gd" id="1_0dnfe"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_s61dn"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_47f0o"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mv4do"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="PrismMesh" id="PrismMesh_wg1x3"]
size = Vector3(0.5, 0.5, 0.3)
[node name="PlayerCharacterBody3D" type="CharacterBody3D"]
transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, -0.0163251)
collision_layer = 2
script = ExtResource("1_0dnfe")
metadata/_edit_group_ = true
[node name="PlayerArea3D" type="Area3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
shape = SubResource("CapsuleShape3D_s61dn")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_s61dn")
[node name="PlayerVisual" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerVisual"]
transform = Transform3D(1, 0, 0, 0, 1, 4.65661e-10, 0, 0, 1, 0, 0, 0)
mesh = SubResource("CapsuleMesh_47f0o")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")
[node name="PlayerDirection" type="MeshInstance3D" parent="PlayerVisual"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, -9.31323e-10, 1, 4.65661e-10, 2.98023e-08, 0, 1, -0.0156226, 1.08631, 0)
mesh = SubResource("PrismMesh_wg1x3")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")

View File

@@ -0,0 +1,15 @@
[gd_scene load_steps=4 format=3 uid="uid://cixlwqycoox8h"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="1_836jx"]
[sub_resource type="BoxMesh" id="BoxMesh_d24c3"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aox6v"]
albedo_texture = ExtResource("1_836jx")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="3DPrototypeCube" type="CSGMesh3D"]
use_collision = true
mesh = SubResource("BoxMesh_d24c3")
material = SubResource("StandardMaterial3D_aox6v")

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://c1v786g5agaw5"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_ptlie"]
[resource]
script = ExtResource("1_ptlie")
duration = 0.0
transition = 0
ease = 2

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="PhantomCameraTweenResource" load_steps=2 format=3 uid="uid://cllveybboaqk5"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_7yoy0"]
[resource]
script = ExtResource("1_7yoy0")
duration = 0.6
transition = 5
ease = 1

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="PhantomCameraTweenResource" load_steps=2 format=3 uid="uid://cecrnq0wnkexh"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_sq5ls"]
[resource]
script = ExtResource("1_sq5ls")
duration = 0.6
transition = 8
ease = 1

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://euybd2w0bax"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_by4ei"]
[resource]
script = ExtResource("1_by4ei")
duration = 0.6
transition = 3
ease = 1

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://cptfoggk2ok67"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_q5tix"]
[resource]
script = ExtResource("1_q5tix")
duration = 0.6
transition = 3
ease = 2

View File

@@ -0,0 +1,36 @@
extends Node2D
@onready var pcam_room_left: PhantomCamera2D = %RoomLeftPhantomCamera2D
@onready var pcam_room_centre: PhantomCamera2D = %RoomCentrePhantomCamera2D
@onready var pcam_room_right: PhantomCamera2D = %RoomRightPhantomCamera2D
@onready var player: Node2D = %CharacterBody2D/%PlayerVisuals
@onready var area_2d_room_left: Area2D = %RoomLeftArea2D
@onready var area_2d_room_centre: Area2D = %RoomCentreArea2D
@onready var area_2d_room_right: Area2D = %RoomRightArea2D
func _ready():
pcam_room_left.set_follow_offset(Vector2(0, -80))
pcam_room_right.set_follow_offset(Vector2(0, -80))
area_2d_room_left.body_entered.connect(_on_body_entered.bind(pcam_room_left))
area_2d_room_centre.body_entered.connect(_on_body_entered.bind(pcam_room_centre))
area_2d_room_right.body_entered.connect(_on_body_entered.bind(pcam_room_right))
area_2d_room_left.body_exited.connect(_on_body_exited.bind(pcam_room_left))
area_2d_room_centre.body_exited.connect(_on_body_exited.bind(pcam_room_centre))
area_2d_room_right.body_exited.connect(_on_body_exited.bind(pcam_room_right))
func _on_body_entered(body: Node2D, pcam: PhantomCamera2D) -> void:
if body == player.get_parent():
pcam.set_follow_target(player)
pcam.set_priority(20)
func _on_body_exited(body: Node2D, pcam: PhantomCamera2D) -> void:
if body == player.get_parent():
pcam.set_priority(0)
pcam.set_follow_target(null)

View File

@@ -0,0 +1,36 @@
extends Node2D
@onready var pcam_room_left: PhantomCamera2D = %RoomLeftPhantomCamera2D
@onready var pcam_room_centre: PhantomCamera2D = %RoomCentrePhantomCamera2D
@onready var pcam_room_right: PhantomCamera2D = %RoomRightPhantomCamera2D
@onready var player: Node2D = %CharacterBody2D
@onready var area_2d_room_left: Area2D = %RoomLeftArea2D
@onready var area_2d_room_centre: Area2D = %RoomCentreArea2D
@onready var area_2d_room_right: Area2D = %RoomRightArea2D
func _ready():
pcam_room_left.set_follow_offset(Vector2(0, -80))
pcam_room_right.set_follow_offset(Vector2(0, -80))
area_2d_room_left.body_entered.connect(_on_body_entered.bind(pcam_room_left))
area_2d_room_centre.body_entered.connect(_on_body_entered.bind(pcam_room_centre))
area_2d_room_right.body_entered.connect(_on_body_entered.bind(pcam_room_right))
area_2d_room_left.body_exited.connect(_on_body_exited.bind(pcam_room_left))
area_2d_room_centre.body_exited.connect(_on_body_exited.bind(pcam_room_centre))
area_2d_room_right.body_exited.connect(_on_body_exited.bind(pcam_room_right))
func _on_body_entered(body: Node2D, pcam: PhantomCamera2D) -> void:
if body == player:
pcam.set_follow_target(player)
pcam.set_priority(20)
func _on_body_exited(body: Node2D, pcam: PhantomCamera2D) -> void:
if body == player:
pcam.set_priority(0)
pcam.set_follow_target(null)

View File

@@ -0,0 +1,16 @@
extends Area2D
@export var area_pcam: PhantomCamera2D
func _ready() -> void:
connect("area_entered", _entered_area)
connect("area_exited", _exited_area)
func _entered_area(area_2d: Area2D) -> void:
if area_2d.get_parent() is CharacterBody2D:
area_pcam.set_priority(20)
func _exited_area(area_2d: Area2D) -> void:
if area_2d.get_parent() is CharacterBody2D:
area_pcam.set_priority(0)

View File

@@ -0,0 +1,189 @@
extends CharacterBody2D
@onready var _player_area2d = %PlayerArea2D
@onready var _player_visuals: Node2D = %PlayerVisuals
@onready var _player_sprite: Sprite2D = %PlayerSprite
@onready var _interaction_prompt: Panel = %InteractionPrompt
@onready var _ui_sign: Control
@onready var _dark_overlay: ColorRect = %DarkOverlay
const KEY_STRINGNAME: StringName = "Key"
const ACTION_STRINGNAME: StringName = "Action"
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
const SPEED = 350.0
const JUMP_VELOCITY = -750.0
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity: int = 2400
var _is_interactive: bool
var _can_open_inventory: bool
var _movement_disabled: bool
var tween: Tween
var _interactive_UI: Control
var _active_pcam: PhantomCamera2D
var _physics_body_trans_last: Transform2D
var _physics_body_trans_current: Transform2D
enum InteractiveType {
NONE = 0,
ITEM = 1,
INVENTORY = 2,
}
var _interactive_object: InteractiveType = InteractiveType.NONE
var InputMovementDic: Dictionary = {
INPUT_MOVE_LEFT_STRINGNAME: {
KEY_STRINGNAME: KEY_A,
ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
},
INPUT_MOVE_RIGHT_STRINGNAME: {
KEY_STRINGNAME: KEY_D,
ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
},
}
func _ready() -> void:
_player_area2d.body_shape_entered.connect(_show_prompt)
_player_area2d.body_shape_exited.connect(_hide_prompt)
_ui_sign = owner.get_node("%UISign")
for input in InputMovementDic:
var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
var movement_input = InputEventKey.new()
movement_input.physical_keycode = key_val
InputMap.add_action(action_val)
InputMap.action_add_event(action_val, movement_input)
_player_visuals.top_level = true
if Engine.get_version_info().major == 4 and \
Engine.get_version_info().minor >= 3:
printerr("Please run the other 2D example scenes, in the 2D-4.3 directory, for more up-to-date example setups.")
func _unhandled_input(event: InputEvent) -> void:
if _is_interactive:
if Input.is_physical_key_pressed(KEY_F):
if tween:
tween.kill()
if not _movement_disabled:
tween = get_tree().create_tween()
_movement_disabled = true
_active_pcam.set_priority(10)
_show_interactive_node(_interactive_UI)
_interactive_node_logic()
else:
_hide_interactive_node(_interactive_UI)
_interactive_node_logic()
if Input.is_physical_key_pressed(KEY_ESCAPE) and _movement_disabled:
_hide_interactive_node(_interactive_UI)
_interactive_node_logic()
func _show_interactive_node(UI: Control) -> void:
UI.modulate.a = 0
UI.visible = true
tween.tween_property(UI, "modulate", Color.WHITE, 1).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CIRC)
func _hide_interactive_node(UI: Control) -> void:
_movement_disabled = false
_active_pcam.set_priority(0)
UI.visible = false
func _interactive_node_logic() -> void:
match _interactive_object:
2:
if _movement_disabled:
_dark_overlay.set_visible(true)
else:
_dark_overlay.set_visible(false)
func _physics_process(delta: float) -> void:
_physics_body_trans_last = _physics_body_trans_current
_physics_body_trans_current = global_transform
if not is_on_floor():
velocity.y += gravity * delta
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
if _movement_disabled: return
var input_dir: = Input.get_axis(
INPUT_MOVE_LEFT_STRINGNAME,
INPUT_MOVE_RIGHT_STRINGNAME
)
if input_dir:
velocity.x = input_dir * SPEED
if input_dir > 0:
_player_sprite.set_flip_h(false)
elif input_dir < 0:
_player_sprite.set_flip_h(true)
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
func _process(delta) -> void:
_player_visuals.global_position = _physics_body_trans_last.interpolate_with(
_physics_body_trans_current,
Engine.get_physics_interpolation_fraction()
).origin
func _show_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
if body is TileMap:
var tile_map: TileMap = body
var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
if cell_data:
var cell_data_type: StringName = cell_data.get_custom_data("Type")
# var cell_global_pos: Vector2 = tile_map.to_global(tile_map.map_to_local(tile_coords))
_is_interactive = true
_interaction_prompt.set_visible(true)
match cell_data_type:
"Sign":
_interactive_UI = owner.get_node("%UISign")
_active_pcam = %ItemFocusPhantomCamera2D
_interactive_object = InteractiveType.ITEM
"Inventory":
_interactive_UI = owner.get_node("%UIInventory")
_interactive_object = InteractiveType.INVENTORY
_active_pcam = %InventoryPhantomCamera2D
func _hide_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
if body is TileMap:
var tile_map: TileMap = body
var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
if cell_data:
_interaction_prompt.set_visible(false)
_is_interactive = false
_interactive_UI = null
_interactive_object = InteractiveType.NONE
_active_pcam = null

View File

@@ -0,0 +1,179 @@
extends CharacterBody2D
@onready var _player_area2d = %PlayerArea2D
@onready var _player_visuals: Node2D = %PlayerVisuals
@onready var _player_sprite: Sprite2D = %PlayerSprite
@onready var _interaction_prompt: Panel = %InteractionPrompt
@onready var _ui_sign: Control
@onready var _dark_overlay: ColorRect = %DarkOverlay
@onready var _noise_emitter: PhantomCameraNoiseEmitter2D
const KEY_STRINGNAME: StringName = "Key"
const ACTION_STRINGNAME: StringName = "Action"
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
const SPEED = 350.0
const JUMP_VELOCITY = -750.0
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity: int = 2400
var _is_interactive: bool
var _can_open_inventory: bool
var _movement_disabled: bool
var tween: Tween
var _interactive_UI: Control
var _active_pcam: PhantomCamera2D
enum InteractiveType {
NONE = 0,
ITEM = 1,
INVENTORY = 2,
}
var _interactive_object: InteractiveType = InteractiveType.NONE
var InputMovementDic: Dictionary = {
INPUT_MOVE_LEFT_STRINGNAME: {
KEY_STRINGNAME: KEY_A,
ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
},
INPUT_MOVE_RIGHT_STRINGNAME: {
KEY_STRINGNAME: KEY_D,
ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
},
}
func _ready() -> void:
_player_area2d.body_shape_entered.connect(_show_prompt)
_player_area2d.body_shape_exited.connect(_hide_prompt)
_ui_sign = owner.get_node("%UISign")
for input in InputMovementDic:
var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
var movement_input = InputEventKey.new()
movement_input.physical_keycode = key_val
InputMap.add_action(action_val)
InputMap.action_add_event(action_val, movement_input)
if Engine.get_version_info().major == 4 and \
Engine.get_version_info().minor < 3:
printerr("This scene is designed to only work properly in Godot 4.3 or later that supports 2D Physics Interpolation.")
printerr("Please run the other 2D example scenes in the other directory.")
func _unhandled_input(event: InputEvent) -> void:
if _is_interactive:
if Input.is_physical_key_pressed(KEY_F):
if tween:
tween.kill()
if not _movement_disabled:
tween = get_tree().create_tween()
_movement_disabled = true
_active_pcam.set_priority(10)
_show_interactive_node(_interactive_UI)
_interactive_node_logic()
else:
_hide_interactive_node(_interactive_UI)
_interactive_node_logic()
if Input.is_physical_key_pressed(KEY_ESCAPE) and _movement_disabled:
_hide_interactive_node(_interactive_UI)
_interactive_node_logic()
if Input.is_physical_key_pressed(KEY_Q):
if get_node_or_null("%PlayerPhantomCameraNoiseEmitter2D"):
%PlayerPhantomCameraNoiseEmitter2D.emit()
func _show_interactive_node(UI: Control) -> void:
UI.modulate.a = 0
UI.visible = true
tween.tween_property(UI, "modulate", Color.WHITE, 1).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CIRC)
func _hide_interactive_node(UI: Control) -> void:
_movement_disabled = false
_active_pcam.set_priority(0)
UI.visible = false
func _interactive_node_logic() -> void:
match _interactive_object:
2:
if _movement_disabled:
_dark_overlay.set_visible(true)
else:
_dark_overlay.set_visible(false)
func _physics_process(delta: float) -> void:
if not is_on_floor():
velocity.y += gravity * delta
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
if _movement_disabled: return
var input_dir: = Input.get_axis(
INPUT_MOVE_LEFT_STRINGNAME,
INPUT_MOVE_RIGHT_STRINGNAME
)
if input_dir:
velocity.x = input_dir * SPEED
if input_dir > 0:
_player_sprite.set_flip_h(false)
elif input_dir < 0:
_player_sprite.set_flip_h(true)
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
func _show_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
if body.is_class("TileMapLayer"): # TODO - Using string reference to support Godot 4.2
var tile_map := body
var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
var cell_data: TileData = tile_map.get_cell_tile_data(tile_coords)
if cell_data:
var cell_data_type: StringName = cell_data.get_custom_data("Type")
# var cell_global_pos: Vector2 = tile_map.to_global(tile_map.map_to_local(tile_coords))
_is_interactive = true
_interaction_prompt.set_visible(true)
match cell_data_type:
"Sign":
_interactive_UI = owner.get_node("%UISign")
_active_pcam = %ItemFocusPhantomCamera2D
_interactive_object = InteractiveType.ITEM
"Inventory":
_interactive_UI = owner.get_node("%UIInventory")
_interactive_object = InteractiveType.INVENTORY
_active_pcam = %InventoryPhantomCamera2D
func _hide_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
if body.is_class("TileMapLayer"): # TODO - Using string reference to support Godot 4.2
var tile_map := body
var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
var cell_data: TileData = tile_map.get_cell_tile_data(tile_coords)
if cell_data:
_interaction_prompt.set_visible(false)
_is_interactive = false
_interactive_UI = null
_interactive_object = InteractiveType.NONE
_active_pcam = null

View File

@@ -0,0 +1,26 @@
extends Area3D
@export var area_pcam: PhantomCamera3D
var initial_camera_position: Vector3
var initial_camera_rotation: Vector3
var tween: Tween
var tween_duration: float = 0.9
func _ready() -> void:
connect("area_entered", _entered_area)
connect("area_exited", _exited_area)
func _entered_area(area_3D: Area3D) -> void:
if area_3D.get_parent() is CharacterBody3D:
area_pcam.set_priority(20)
func _exited_area(area_3D: Area3D) -> void:
if area_3D.get_parent() is CharacterBody3D:
area_pcam.set_priority(0)

View File

@@ -0,0 +1,71 @@
extends Node3D
@onready var npc_pcam: PhantomCamera3D = %NPCPhantomCamera3D
@onready var dialogueArea: Area3D = %NPCInteractionArea3D
@onready var dialogueLabel3D: Label3D = %NPCDialogueExampleLabel
@onready var player: CharacterBody3D = %PlayerCharacterBody3D
@onready var move_to_location: Vector3 = %MoveToLocation.get_global_position()
var dialogue_label_initial_position: Vector3
var dialogue_label_initial_rotation: Vector3
var tween: Tween
var tween_duration: float = 0.9
var tween_transition: Tween.TransitionType = Tween.TRANS_QUAD
var interactable: bool
var is_interacting: bool
func _ready() -> void:
dialogueArea.connect("area_entered", _interactable)
dialogueArea.connect("area_exited", _not_interactable)
dialogueLabel3D.set_visible(false)
dialogue_label_initial_position = dialogueLabel3D.get_global_position()
dialogue_label_initial_rotation = dialogueLabel3D.get_global_rotation()
npc_pcam.tween_completed.connect(_on_tween_started)
func _on_tween_started() -> void:
player.movement_enabled = false
func _interactable(area_3D: Area3D) -> void:
if area_3D.get_parent() is CharacterBody3D:
dialogueLabel3D.set_visible(true)
interactable = true
var tween: Tween = get_tree().create_tween().set_trans(tween_transition).set_ease(Tween.EASE_IN_OUT).set_loops()
tween.tween_property(dialogueLabel3D, "global_position", dialogue_label_initial_position - Vector3(0, -0.2, 0), tween_duration)
tween.tween_property(dialogueLabel3D, "position", dialogue_label_initial_position, tween_duration)
func _not_interactable(area_3D: Area3D) -> void:
if area_3D.get_parent() is CharacterBody3D:
dialogueLabel3D.set_visible(false)
interactable = false
func _input(event) -> void:
if not interactable: return
if event is InputEventKey and event.pressed:
if event.keycode == KEY_F:
var tween: Tween = get_tree().create_tween() \
.set_parallel(true) \
.set_trans(Tween.TRANS_QUART) \
.set_ease(Tween.EASE_IN_OUT)
if not is_interacting:
npc_pcam.priority = 20
tween.tween_property(player, "global_position", move_to_location, 0.6).set_trans(tween_transition)
tween.tween_property(dialogueLabel3D, "rotation", Vector3(deg_to_rad(-20), deg_to_rad(53), 0), 0.6).set_trans(tween_transition)
else:
npc_pcam.priority = 0
tween.tween_property(dialogueLabel3D, "rotation", dialogue_label_initial_rotation, 0.9)
player.movement_enabled = true
is_interacting = !is_interacting

View File

@@ -0,0 +1,18 @@
extends Node
@export var path_pcam: PhantomCamera3D
func _ready() -> void:
connect("area_entered", _entered_area)
connect("area_exited", _exited_area)
func _entered_area(area_3D: Area3D) -> void:
if area_3D.get_parent() is CharacterBody3D:
path_pcam.set_priority(20)
func _exited_area(area_3D: Area3D) -> void:
if area_3D.get_parent() is CharacterBody3D:
path_pcam.set_priority(0)

View File

@@ -0,0 +1,103 @@
extends CharacterBody3D
@export var SPEED: float = 5.0
@export var JUMP_VELOCITY: float = 4.5
@export var enable_gravity = true
@onready var _camera: Camera3D
@onready var _player_visual: Node3D = %PlayerVisual
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity: float = 9.8
var movement_enabled: bool = true
var _physics_body_trans_last: Transform3D
var _physics_body_trans_current: Transform3D
const KEY_STRINGNAME: StringName = "Key"
const ACTION_STRINGNAME: StringName = "Action"
const INPUT_MOVE_UP_STRINGNAME: StringName = "move_up"
const INPUT_MOVE_DOWM_STRINGNAME: StringName = "move_down"
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
var InputMovementDic: Dictionary = {
INPUT_MOVE_UP_STRINGNAME: {
KEY_STRINGNAME: KEY_W,
ACTION_STRINGNAME: INPUT_MOVE_UP_STRINGNAME
},
INPUT_MOVE_DOWM_STRINGNAME: {
KEY_STRINGNAME: KEY_S,
ACTION_STRINGNAME: INPUT_MOVE_DOWM_STRINGNAME
},
INPUT_MOVE_LEFT_STRINGNAME: {
KEY_STRINGNAME: KEY_A,
ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
},
INPUT_MOVE_RIGHT_STRINGNAME: {
KEY_STRINGNAME: KEY_D,
ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
},
}
func _ready() -> void:
for input in InputMovementDic:
var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
_camera = owner.get_node("%MainCamera3D")
var movement_input = InputEventKey.new()
movement_input.physical_keycode = key_val
InputMap.add_action(action_val)
InputMap.action_add_event(action_val, movement_input)
_player_visual.top_level = true
func _physics_process(delta: float) -> void:
_physics_body_trans_last = _physics_body_trans_current
_physics_body_trans_current = global_transform
# Add the gravity.
if enable_gravity and not is_on_floor():
velocity.y -= gravity * delta
if not movement_enabled: return
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir: Vector2 = Input.get_vector(
INPUT_MOVE_LEFT_STRINGNAME,
INPUT_MOVE_RIGHT_STRINGNAME,
INPUT_MOVE_UP_STRINGNAME,
INPUT_MOVE_DOWM_STRINGNAME
)
var cam_dir: Vector3 = -_camera.global_transform.basis.z
var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
var move_dir: Vector3 = Vector3.ZERO
move_dir.x = direction.x
move_dir.z = direction.z
move_dir = move_dir.rotated(Vector3.UP, _camera.rotation.y).normalized()
velocity.x = move_dir.x * SPEED
velocity.z = move_dir.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()
func _process(_delta: float) -> void:
_player_visual.global_transform = _physics_body_trans_last.interpolate_with(
_physics_body_trans_current,
Engine.get_physics_interpolation_fraction()
)

View File

@@ -0,0 +1,84 @@
extends CharacterBody3D
@export var SPEED: float = 5.0
@export var JUMP_VELOCITY: float = 4.5
@export var enable_gravity = true
@onready var _camera: Camera3D
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity: float = 9.8
var movement_enabled: bool = true
const KEY_STRINGNAME: StringName = "Key"
const ACTION_STRINGNAME: StringName = "Action"
const INPUT_MOVE_UP_STRINGNAME: StringName = "move_up"
const INPUT_MOVE_DOWM_STRINGNAME: StringName = "move_down"
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
var InputMovementDic: Dictionary = {
INPUT_MOVE_UP_STRINGNAME: {
KEY_STRINGNAME: KEY_W,
ACTION_STRINGNAME: INPUT_MOVE_UP_STRINGNAME
},
INPUT_MOVE_DOWM_STRINGNAME: {
KEY_STRINGNAME: KEY_S,
ACTION_STRINGNAME: INPUT_MOVE_DOWM_STRINGNAME
},
INPUT_MOVE_LEFT_STRINGNAME: {
KEY_STRINGNAME: KEY_A,
ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
},
INPUT_MOVE_RIGHT_STRINGNAME: {
KEY_STRINGNAME: KEY_D,
ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
},
}
func _ready() -> void:
for input in InputMovementDic:
var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
_camera = owner.get_node("%MainCamera3D")
var movement_input = InputEventKey.new()
movement_input.physical_keycode = key_val
InputMap.add_action(action_val)
InputMap.action_add_event(action_val, movement_input)
func _physics_process(delta: float) -> void:
# Add the gravity.
if enable_gravity and not is_on_floor():
velocity.y -= gravity * delta
if not movement_enabled: return
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir: Vector2 = Input.get_vector(
INPUT_MOVE_LEFT_STRINGNAME,
INPUT_MOVE_RIGHT_STRINGNAME,
INPUT_MOVE_UP_STRINGNAME,
INPUT_MOVE_DOWM_STRINGNAME
)
var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
var move_dir: Vector3 = Vector3.ZERO
move_dir.x = direction.x
move_dir.z = direction.z
move_dir = move_dir.rotated(Vector3.UP, _camera.rotation.y).normalized()
velocity.x = move_dir.x * SPEED
velocity.z = move_dir.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()

View File

@@ -0,0 +1,54 @@
extends "player_controller.gd"
@onready var _player_pcam: PhantomCamera3D = %PlayerPhantomCamera3D
@onready var _player_character: CharacterBody3D = %PlayerCharacterBody3D
@export var mouse_sensitivity: float = 0.05
@export var min_pitch: float = -89.9
@export var max_pitch: float = 50
@export var min_yaw: float = 0
@export var max_yaw: float = 360
@export var run_noise: PhantomCameraNoise3D
func _ready() -> void:
super()
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
%EmitterTip.visible = true
func _physics_process(delta: float) -> void:
super(delta)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventKey:
if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
if event.keycode == KEY_Q and event.is_pressed():
%PlayerPhantomCameraNoiseEmitter3D.emit()
if event is InputEventMouseMotion:
var pcam_rotation_degrees: Vector3
# Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
pcam_rotation_degrees = _player_pcam.rotation_degrees
# Change the X rotation
pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
# Clamp the rotation in the X axis so it go over or under the target
pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
# Change the Y rotation value
pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
# Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
# Change the SpringArm3D node's rotation and rotate around its target
_player_pcam.rotation_degrees = pcam_rotation_degrees

View File

@@ -0,0 +1,54 @@
extends "player_controller_4.4.gd"
@onready var _player_pcam: PhantomCamera3D = %PlayerPhantomCamera3D
@onready var _player_character: CharacterBody3D = %PlayerCharacterBody3D
@export var mouse_sensitivity: float = 0.05
@export var min_pitch: float = -89.9
@export var max_pitch: float = 50
@export var min_yaw: float = 0
@export var max_yaw: float = 360
@export var run_noise: PhantomCameraNoise3D
func _ready() -> void:
super()
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
%EmitterTip.visible = true
func _physics_process(delta: float) -> void:
super(delta)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventKey:
if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
if event.keycode == KEY_Q and event.is_pressed():
%PlayerPhantomCameraNoiseEmitter3D.emit()
if event is InputEventMouseMotion:
var pcam_rotation_degrees: Vector3
# Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
pcam_rotation_degrees = _player_pcam.rotation_degrees
# Change the X rotation
pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
# Clamp the rotation in the X axis so it go over or under the target
pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
# Change the Y rotation value
pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
# Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
# Change the SpringArm3D node's rotation and rotate around its target
_player_pcam.rotation_degrees = pcam_rotation_degrees

View File

@@ -0,0 +1,87 @@
extends "player_controller.gd"
@onready var _player_pcam: PhantomCamera3D
@onready var _aim_pcam: PhantomCamera3D
@onready var _player_direction: Node3D = %PlayerDirection
@onready var _ceiling_pcam: PhantomCamera3D
@export var mouse_sensitivity: float = 0.05
@export var min_pitch: float = -89.9
@export var max_pitch: float = 50
@export var min_yaw: float = 0
@export var max_yaw: float = 360
func _ready() -> void:
super()
_player_pcam = owner.get_node("%PlayerPhantomCamera3D")
_aim_pcam = owner.get_node("%PlayerAimPhantomCamera3D")
_ceiling_pcam = owner.get_node("%CeilingPhantomCamera3D")
if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _physics_process(delta: float) -> void:
super(delta)
if velocity.length() > 0.2:
var look_direction: Vector2 = Vector2(velocity.z, velocity.x)
_player_direction.rotation.y = look_direction.angle()
func _unhandled_input(event: InputEvent) -> void:
if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
var active_pcam: PhantomCamera3D
_set_pcam_rotation(_player_pcam, event)
_set_pcam_rotation(_aim_pcam, event)
if _player_pcam.get_priority() > _aim_pcam.get_priority():
_toggle_aim_pcam(event)
else:
_toggle_aim_pcam(event)
if event is InputEventKey and event.pressed:
if event.keycode == KEY_SPACE:
if _ceiling_pcam.get_priority() < 30 and _player_pcam.is_active():
_ceiling_pcam.set_priority(30)
else:
_ceiling_pcam.set_priority(1)
func _set_pcam_rotation(pcam: PhantomCamera3D, event: InputEvent) -> void:
if event is InputEventMouseMotion:
var pcam_rotation_degrees: Vector3
# Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
pcam_rotation_degrees = pcam.get_third_person_rotation_degrees()
# Change the X rotation
pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
# Clamp the rotation in the X axis so it go over or under the target
pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
# Change the Y rotation value
pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
# Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
# Change the SpringArm3D node's rotation and rotate around its target
pcam.set_third_person_rotation_degrees(pcam_rotation_degrees)
func _toggle_aim_pcam(event: InputEvent) -> void:
if event is InputEventMouseButton \
and event.is_pressed() \
and event.button_index == 2 \
and (_player_pcam.is_active() or _aim_pcam.is_active()):
if _player_pcam.get_priority() > _aim_pcam.get_priority():
_aim_pcam.set_priority(30)
else:
_aim_pcam.set_priority(0)

View File

@@ -0,0 +1,85 @@
extends "player_controller_4.4.gd"
@onready var _player_pcam: PhantomCamera3D
@onready var _aim_pcam: PhantomCamera3D
@onready var _player_direction: Node3D = %PlayerDirection
@onready var _ceiling_pcam: PhantomCamera3D
@export var mouse_sensitivity: float = 0.05
@export var min_pitch: float = -89.9
@export var max_pitch: float = 50
@export var min_yaw: float = 0
@export var max_yaw: float = 360
func _ready() -> void:
super()
_player_pcam = owner.get_node("%PlayerPhantomCamera3D")
_aim_pcam = owner.get_node("%PlayerAimPhantomCamera3D")
_ceiling_pcam = owner.get_node("%CeilingPhantomCamera3D")
if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _physics_process(delta: float) -> void:
super(delta)
if velocity.length() > 0.2:
var look_direction: Vector2 = Vector2(velocity.z, velocity.x)
_player_direction.rotation.y = look_direction.angle()
func _unhandled_input(event: InputEvent) -> void:
if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
var active_pcam: PhantomCamera3D
_set_pcam_rotation(_player_pcam, event)
_set_pcam_rotation(_aim_pcam, event)
if _player_pcam.get_priority() > _aim_pcam.get_priority():
_toggle_aim_pcam(event)
else:
_toggle_aim_pcam(event)
if event is InputEventKey and event.pressed:
if event.keycode == KEY_SPACE:
if _ceiling_pcam.get_priority() < 30 and _player_pcam.is_active():
_ceiling_pcam.set_priority(30)
else:
_ceiling_pcam.set_priority(1)
func _set_pcam_rotation(pcam: PhantomCamera3D, event: InputEvent) -> void:
if event is InputEventMouseMotion:
var pcam_rotation_degrees: Vector3
# Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
pcam_rotation_degrees = pcam.get_third_person_rotation_degrees()
# Change the X rotation
pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
# Clamp the rotation in the X axis so it go over or under the target
pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
# Change the Y rotation value
pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
# Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
# Change the SpringArm3D node's rotation and rotate around its target
pcam.set_third_person_rotation_degrees(pcam_rotation_degrees)
func _toggle_aim_pcam(event: InputEvent) -> void:
if event is InputEventMouseButton \
and event.is_pressed() \
and event.button_index == 2 \
and (_player_pcam.is_active() or _aim_pcam.is_active()):
if _player_pcam.get_priority() > _aim_pcam.get_priority():
_aim_pcam.set_priority(30)
else:
_aim_pcam.set_priority(0)

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b7cs6me43ufh3"
path="res://.godot/imported/inventory_container.png-12241277f279bfc4bf7d5dad6b3e8ff2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/inventory_container.png"
dest_files=["res://.godot/imported/inventory_container.png-12241277f279bfc4bf7d5dad6b3e8ff2.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c77npili4pel4"
path="res://.godot/imported/level_spritesheet.png-26a44dd21a040a5480d5ccba54377d99.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png"
dest_files=["res://.godot/imported/level_spritesheet.png-26a44dd21a040a5480d5ccba54377d99.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwep0on2tthn7"
path="res://.godot/imported/phantom_camera_2d_sprite.png-deab230b83ae03aeb308a08ff66b8dbc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/phantom_camera_2d_sprite.png"
dest_files=["res://.godot/imported/phantom_camera_2d_sprite.png-deab230b83ae03aeb308a08ff66b8dbc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.5361 7.10309C13.6839 7.10309 14.6144 7.94367 14.6144 8.98059C14.6144 9.5197 14.3629 10.0057 13.9601 10.3482C14.1589 10.5805 14.1526 10.8503 14.1526 11.1362L16 10.0236V14.1959L14.1526 13.0833V13.3614C14.1526 13.8223 13.739 14.1959 13.2289 14.1959H9.07216C8.56201 14.1959 8.14845 13.8223 8.14845 13.3614V12.0029C7.34123 11.7452 6.76289 11.0497 6.76289 10.2323C6.76289 9.19534 7.69339 8.35476 8.84124 8.35476C9.49502 8.35476 10.0783 8.62747 10.4593 9.05381C10.4454 8.72765 10.5274 8.40055 10.6897 8.11774C11.0356 7.51496 11.7326 7.10309 12.5361 7.10309Z" fill="#8DA5F3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.8 1C7.45097 1 9.6 3.08749 9.6 5.66254V7.11532C9.38344 7.06886 9.16015 7.04201 8.93273 7.03632C9.02973 6.78223 9.08571 6.48275 9.08571 6.1621C9.08571 5.24244 8.62521 4.49691 8.05714 4.49691C7.48908 4.49691 7.02857 5.24244 7.02857 6.1621C7.02857 6.63483 7.15025 7.06155 7.34566 7.36466C6.25657 7.86676 5.4433 8.90657 5.4433 10.2323C5.4433 11.3311 6.01594 12.2448 6.82887 12.8078V13.3614C6.82887 13.4831 6.8386 13.6006 6.85714 13.7139V14.3216C6.85714 14.6894 6.55014 14.9876 6.17143 14.9876C5.79272 14.9876 5.48571 14.6894 5.48571 14.3216V13.6555C5.48571 13.2876 5.17871 12.9894 4.8 12.9894C4.42129 12.9894 4.11429 13.2876 4.11429 13.6555V14.3216C4.11429 14.6894 3.80728 14.9876 3.42857 14.9876C3.04986 14.9876 2.74286 14.6894 2.74286 14.3216V13.6555C2.74286 13.2876 2.43585 12.9894 2.05714 12.9894C1.67843 12.9894 1.37143 13.2876 1.37143 13.6555V14.3216C1.37143 14.6894 1.06442 14.9876 0.685714 14.9876C0.307005 14.9876 0 14.6894 0 14.3216V5.66254C0 3.08749 2.14903 1 4.8 1ZM4.62857 7.8273C5.19664 7.8273 5.65714 7.08176 5.65714 6.1621C5.65714 5.24244 5.19664 4.49691 4.62857 4.49691C4.06051 4.49691 3.6 5.24244 3.6 6.1621C3.6 7.08176 4.06051 7.8273 4.62857 7.8273Z" fill="#8DA5F3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cscjjt55iw2cu"
path="res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg"
dest_files=["res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=8.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bloouh2jtndx1"
path="res://.godot/imported/sign_prompt.png-18d451127e1cd1a16367acd23cec47e5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/sign_prompt.png"
dest_files=["res://.godot/imported/sign_prompt.png-18d451127e1cd1a16367acd23cec47e5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c7ja4woxol8yc"
path.bptc="res://.godot/imported/checker_pattern_dark.png-70cedad2d3abf4ad6166d6614eefa7fb.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png"
dest_files=["res://.godot/imported/checker_pattern_dark.png-70cedad2d3abf4ad6166d6614eefa7fb.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3mskbmvnpwux"
path.s3tc="res://.godot/imported/target.png-878c5e8d057c8a9a4c2322d4ab88e9ef.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/3D/target.png"
dest_files=["res://.godot/imported/target.png-878c5e8d057c8a9a4c2322d4ab88e9ef.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -0,0 +1,37 @@
[gd_scene load_steps=3 format=3 uid="uid://dg7rhrymsrrrm"]
[ext_resource type="Texture2D" uid="uid://b7cs6me43ufh3" path="res://addons/phantom_camera/examples/textures/2D/inventory_container.png" id="1_pi2dp"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_0rdcn"]
[node name="Control" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 28.0
offset_top = -255.0
offset_right = 908.0
offset_bottom = 183.0
grow_vertical = 2
texture = ExtResource("1_pi2dp")
[node name="Label" type="Label" parent="TextureRect"]
layout_mode = 0
offset_left = 345.0
offset_top = 12.0
offset_right = 535.0
offset_bottom = 60.0
theme_override_colors/font_color = Color(0.356863, 0.105882, 0.133333, 1)
theme_override_fonts/font = ExtResource("2_0rdcn")
theme_override_font_sizes/font_size = 32
text = "Inventory"
horizontal_alignment = 1
uppercase = true

View File

@@ -0,0 +1,83 @@
[gd_scene load_steps=4 format=3 uid="uid://iq5xd1ob1res"]
[ext_resource type="Texture2D" uid="uid://bloouh2jtndx1" path="res://addons/phantom_camera/examples/textures/2D/sign_prompt.png" id="1_tftrk"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_y5454"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r4h3u"]
bg_color = Color(0.470588, 0.6, 0.45098, 1)
corner_radius_top_right = 47
corner_radius_bottom_left = 40
[node name="Control" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -273.568
offset_top = 47.0
offset_right = 273.568
offset_bottom = 413.0
grow_horizontal = 2
texture = ExtResource("1_tftrk")
metadata/_edit_group_ = true
[node name="Label" type="Label" parent="TextureRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 25.0
offset_top = 64.0
offset_right = -25.0
offset_bottom = -88.0
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(0.207843, 0.0470588, 0.0666667, 1)
theme_override_fonts/font = ExtResource("2_y5454")
theme_override_font_sizes/font_size = 62
text = "Stay Awhile
and read"
horizontal_alignment = 1
vertical_alignment = 1
uppercase = true
[node name="Panel" type="Panel" parent="."]
visible = false
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -240.0
offset_right = 240.0
offset_bottom = 200.0
grow_horizontal = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_r4h3u")
metadata/_edit_use_anchors_ = true
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="Label2" type="Label" parent="Panel/VBoxContainer"]
layout_mode = 2
text = "Example Textsdadassa
"
horizontal_alignment = 1
vertical_alignment = 1