Lots of stuff I forgot to commit because Holidays

- D&D dice engine (see README)
- Markdown support
- Phantom camera
This commit is contained in:
Tony Bark 2023-12-24 20:39:57 -05:00
parent 9589acd877
commit 2b41f84b05
125 changed files with 13170 additions and 23 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

View file

@ -0,0 +1,378 @@
[gd_scene load_steps=35 format=3 uid="uid://ci12ytew5vwty"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_ry0dd"]
[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="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/3DPrototypeCubeDark.tscn" id="3_f5qrw"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/PlayerPhantomCamera3DTween.tres" id="4_a27nb"]
[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/examples/scripts/3D/player_controller.gd" id="5_c85ys"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="6_ebm1o"]
[ext_resource type="Resource" uid="uid://c1v786g5agaw5" path="res://addons/phantom_camera/examples/resources/tween/FixedCameraTween.tres" id="8_c0sgt"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_g0eml"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_flw6w"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_dy1i7"]
[sub_resource type="Resource" id="Resource_su0l1"]
script = ExtResource("6_ebm1o")
duration = 1.2
transition = 3
ease = 2
[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="StandardMaterial3D" id="StandardMaterial3D_v5iy7"]
albedo_color = Color(0.988235, 0.478431, 0.905882, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_wcrbb"]
size = Vector3(6.8, 0.1, 5.4)
[sub_resource type="BoxShape3D" id="BoxShape3D_ctyr8"]
size = Vector3(7.4, 0.1, 3.6)
[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(0.997417, 0.0220127, -0.0662648, 0, 0.948973, 0.315232, 0.0698191, -0.314467, 0.946641, -4.132, 2, 9.011)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
script = ExtResource("1_ry0dd")
[node name="PlayerGroup" type="Node" parent="."]
[node name="MovementInstructionsLabel" type="Label3D" parent="PlayerGroup"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -2.50422, -0.455369, 6.62486)
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"]
unique_name_in_owner = true
transform = Transform3D(0.997417, 0.0220127, -0.0662648, 0, 0.948973, 0.315232, 0.0698191, -0.314467, 0.946641, -4.132, 2, 9.011)
script = ExtResource("2_y3dy8")
priority_override = false
priority = 3
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/target_offset = Vector3(0.5, 1.5, 2)
follow_parameters/damping = true
follow_parameters/damping_value = 10.0
look_at_mode = 0
tween_parameters = ExtResource("4_a27nb")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="PlayerGroup"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.632, 0.5, 7.011)
script = ExtResource("5_c85ys")
SPEED = 3.5
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerGroup/PlayerCharacterBody3D"]
mesh = SubResource("CapsuleMesh_g0eml")
surface_material_override/0 = SubResource("StandardMaterial3D_flw6w")
[node name="PlayerArea3D" type="Area3D" parent="PlayerGroup/PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerGroup/PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_dy1i7")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerGroup/PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_dy1i7")
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = SubResource("Resource_su0l1")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = ExtResource("8_c0sgt")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = ExtResource("8_c0sgt")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = ExtResource("8_c0sgt")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")

View file

@ -0,0 +1,172 @@
[gd_scene load_steps=11 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="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="3_6xt4f"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.tscn" id="4_t4fso"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/CheckerPatternDark.png" id="5_c0upu"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleMesh" id="CapsuleMesh_xgjm7"]
radius = 0.05
height = 0.1
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
[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(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, -16.4602, 2.94168, 7.33457)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
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"]
unique_name_in_owner = true
transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, -16.4602, 2.94168, 7.33457)
script = ExtResource("2_g1bv4")
priority_override = false
priority = 0
follow_mode = 5
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/distance = 4.0
follow_parameters/target_offset = Vector3(0, 0, 0)
follow_parameters/damping = false
follow_parameters/dead_zone_horizontal = 0.294
follow_parameters/dead_zone_vertical = 0.201
follow_parameters/viewfinder_in_play = true
look_at_mode = 0
tween_parameters = null
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -16.4602, 0.507, 4.16163)
script = ExtResource("3_6xt4f")
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D"]
mesh = SubResource("CapsuleMesh_pda7a")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D"]
visible = false
mesh = SubResource("CapsuleMesh_xgjm7")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[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, -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.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, -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, -5.90576, 0.0440434, 8.36617)
use_collision = true
size = Vector3(4.57784, 1.08809, 3.11285)

View file

@ -0,0 +1,222 @@
[gd_scene load_steps=13 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/examples/scripts/3D/player_controller.gd" id="3_tk586"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.tscn" id="4_8qqha"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/CheckerPatternDark.png" id="5_wr3bq"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
[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(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, -11.2101, 6.38964, 6.74731)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
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"]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, -11.2101, 6.38964, 6.74731)
script = ExtResource("2_q1ygp")
priority_override = false
priority = 5
follow_mode = 1
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/damping = true
follow_parameters/damping_value = 5.0
look_at_mode = 0
tween_parameters = null
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -11.2101, 6.38964, 6.74731)
script = ExtResource("3_tk586")
enable_gravity = false
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D"]
visible = false
mesh = SubResource("CapsuleMesh_pda7a")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCharacterBody3D2" type="CharacterBody3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -12.0829, 0.5, 1.40206)
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D2"]
mesh = SubResource("CapsuleMesh_pda7a")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D2"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2"]
shape = SubResource("CapsuleShape3D_3xplc")
[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, -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, -10.0461, 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, -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="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75028, 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, -4.61885, 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, -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="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2356, -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, 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="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, 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,186 @@
[gd_scene load_steps=13 format=3 uid="uid://dbfiy6svpcqap"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.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="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/CheckerPatternDark.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/examples/scripts/3D/player_controller.gd" id="4_hehj7"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
[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(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -12.326, 2.60717, 5.26374)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
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="PlayerPhantomCamera3D" type="Node3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -12.326, 2.60717, 5.26374)
script = ExtResource("2_pi7mp")
priority_override = false
priority = 5
follow_mode = 3
follow_group = Array[NodePath]([NodePath("../PlayerCharacterBody3D2"), NodePath("../../NPCs/PlayerMeshInstance3D"), NodePath("../../NPCs/PlayerMeshInstance3D2")])
follow_parameters/auto_distance = true
follow_parameters/min_distance = 2.0
follow_parameters/max_distance = 15.0
follow_parameters/auto_distance_divisor = 20.0
follow_parameters/target_offset = Vector3(0, 0, 0)
follow_parameters/damping = true
follow_parameters/damping_value = 5.0
look_at_mode = 0
tween_parameters = null
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D2" type="CharacterBody3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -12.0829, 0.5, 1.40206)
script = ExtResource("4_hehj7")
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D2"]
mesh = SubResource("CapsuleMesh_pda7a")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D2"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2"]
shape = SubResource("CapsuleShape3D_3xplc")
[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)

View file

@ -0,0 +1,239 @@
[gd_scene load_steps=23 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/examples/scripts/3D/player_controller.gd" id="2_tsk60"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3D.gd" id="3_bd7x3"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_hbjve"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.tscn" id="4_dfdlo"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/path_follow.gd" id="5_vdqkm"]
[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_m07s2"]
script = ExtResource("3_hbjve")
duration = 0.6
transition = 1
ease = 2
[sub_resource type="CapsuleMesh" id="CapsuleMesh_vr5ym"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mjpjo"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ca4wa"]
[sub_resource type="Resource" id="Resource_rw4bl"]
script = ExtResource("3_hbjve")
duration = 1.0
transition = 3
ease = 2
[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="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.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 4.00185, 2.99999, -1.51096)
fov = 90.0
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
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="."]
unique_name_in_owner = true
transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 4.00185, 2.99999, -1.51096)
script = ExtResource("3_bd7x3")
priority_override = false
priority = 3
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/target_offset = Vector3(0, 2.5, 2)
follow_parameters/damping = true
follow_parameters/damping_value = 10.0
look_at_mode = 0
tween_parameters = SubResource("Resource_m07s2")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.00185, 0.499993, -3.51096)
script = ExtResource("2_tsk60")
SPEED = 3.5
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerCharacterBody3D"]
mesh = SubResource("CapsuleMesh_vr5ym")
surface_material_override/0 = SubResource("StandardMaterial3D_mjpjo")
[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_ca4wa")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_ca4wa")
[node name="Paths" type="Node" parent="."]
[node name="PathPhantomCamera3D" type="Node3D" parent="Paths"]
transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, 3.73176, 7.9199, -4.8731)
script = ExtResource("3_bd7x3")
priority_override = false
priority = 2
follow_mode = 4
follow_target = NodePath("../../PlayerCharacterBody3D")
follow_path = NodePath("../FollowPath")
follow_parameters/damping = true
follow_parameters/damping_value = 3.0
look_at_mode = 0
tween_parameters = SubResource("Resource_rw4bl")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="FollowPath" type="Path3D" parent="Paths"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.73176, 7.9199, -4.8731)
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, 4, -0.45, -10)
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"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 4.00185, 7.9199, -16.7205)
visible = false
script = ExtResource("3_bd7x3")
priority_override = false
priority = 2
follow_mode = 4
follow_target = NodePath("../../PlayerCharacterBody3D")
follow_path = NodePath("../FollowPath2")
follow_parameters/damping = true
follow_parameters/damping_value = 3.0
look_at_mode = 0
tween_parameters = SubResource("Resource_rw4bl")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="FollowPath2" type="Path3D" parent="Paths"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.92937, 7.9199, -16.7205)
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, 4, 0, -17)
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, 3.6, 0, -1.5)
[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, 0.568982, 2.59595, -8.78089)
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, 4.0203, -0.455369, -2.69276)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("6_obo83")
font_size = 48

View file

@ -0,0 +1,170 @@
[gd_scene load_steps=12 format=3 uid="uid://buglvjwpn85ny"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_trxu1"]
[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/camera_3D_resource.gd" id="3_ac3tw"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="3_uymu2"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.tscn" id="4_4u2y6"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/CheckerPatternDark.png" id="5_1tybo"]
[sub_resource type="Resource" id="Resource_beoni"]
script = ExtResource("3_ac3tw")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
fov = 75.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_1tybo")
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(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.1946, 2.34415, 10.4086)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
script = ExtResource("1_trxu1")
[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"]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.1946, 2.34415, 10.4086)
script = ExtResource("2_grjck")
priority_override = false
priority = 0
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D2")
follow_parameters/target_offset = Vector3(0, 2, 2)
follow_parameters/damping = true
follow_parameters/damping_value = 10.0
look_at_mode = 0
tween_parameters = null
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = SubResource("Resource_beoni")
[node name="PlayerCharacterBody3D2" type="CharacterBody3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -13.1946, 0.344147, 8.40857)
script = ExtResource("3_uymu2")
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D2"]
mesh = SubResource("CapsuleMesh_pda7a")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D2"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2"]
shape = SubResource("CapsuleShape3D_3xplc")
[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)

View file

@ -0,0 +1,216 @@
[gd_scene load_steps=19 format=3 uid="uid://4i5csj0s34nb"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_b4nxi"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3D.gd" id="2_whx47"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_oisgy"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.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/examples/scripts/3D/player_controller_third_person.gd" id="5_p60kr"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_kg7u1"]
[sub_resource type="Resource" id="Resource_0yw0t"]
script = ExtResource("3_oisgy")
duration = 0.3
transition = 1
ease = 2
[sub_resource type="Resource" id="Resource_bai5y"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
fov = 75.0
[sub_resource type="Resource" id="Resource_xvcjx"]
script = ExtResource("3_oisgy")
duration = 0.25
transition = 1
ease = 2
[sub_resource type="Resource" id="Resource_yf1op"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 1.0
v_offset = 0.0
fov = 50.0
[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)
[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_daoak"]
script = ExtResource("3_oisgy")
duration = 1.0
transition = 7
ease = 2
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 3.01476)
current = true
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
script = ExtResource("1_b4nxi")
[node name="PlayerPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 3.01476)
script = ExtResource("2_whx47")
priority_override = false
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/spring_arm/spring_length = 3.5
follow_parameters/spring_arm/collision_mask = 1
follow_parameters/spring_arm/shape = null
follow_parameters/spring_arm/margin = 0.2
follow_parameters/target_offset = Vector3(0, 0, 0)
follow_parameters/damping = true
follow_parameters/damping_value = 10.0
look_at_mode = 0
tween_parameters = SubResource("Resource_0yw0t")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = SubResource("Resource_bai5y")
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="."]
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.35423, 1.41338)
script = ExtResource("2_whx47")
priority_override = false
priority = 0
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/spring_arm/spring_length = 1.5
follow_parameters/spring_arm/collision_mask = 1
follow_parameters/spring_arm/shape = null
follow_parameters/spring_arm/margin = 0.5
follow_parameters/target_offset = Vector3(0, 0.795, 0)
follow_parameters/damping = false
look_at_mode = 0
tween_parameters = SubResource("Resource_xvcjx")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = SubResource("Resource_yf1op")
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
unique_name_in_owner = true
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("5_p60kr")
metadata/_edit_group_ = true
[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_s61dn")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_s61dn")
[node name="PlayerModel" type="Node3D" parent="PlayerCharacterBody3D"]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerCharacterBody3D/PlayerModel"]
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="PlayerMeshInstance3D2" type="MeshInstance3D" parent="PlayerCharacterBody3D/PlayerModel"]
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")
[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")
priority_override = false
priority = 1
follow_mode = 0
look_at_mode = 0
tween_parameters = SubResource("Resource_daoak")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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,202 @@
[gd_scene load_steps=13 format=3 uid="uid://bdhrdhbux7sjg"]
[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/examples/scripts/3D/player_controller.gd" id="3_odwso"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.tscn" id="4_2i811"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/CheckerPatternDark.png" id="5_u5qhp"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
[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="Node3D" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.999952, -0.00114636, 0.00116873, -5.82049e-11, 0.713788, 0.700216, -0.00163718, -0.700172, 0.713831, -12.3172, 5.78213, 6.64571)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
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="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999952, -0.00114636, 0.00116873, 0, 0.713788, 0.700216, -0.00163718, -0.700172, 0.713831, -12.3172, 5.78213, 6.64571)
script = ExtResource("2_8md3q")
priority_override = false
priority = 5
follow_mode = 0
look_at_mode = 3
look_at_group = Array[NodePath]([NodePath("../PlayerCharacterBody3D2"), NodePath("../../NPCs/PlayerMeshInstance3D"), NodePath("../../NPCs/PlayerMeshInstance3D2")])
tween_parameters = null
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D2" type="CharacterBody3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -12.0829, 0.5, 1.40206)
script = ExtResource("3_odwso")
SPEED = 3.0
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D2"]
mesh = SubResource("CapsuleMesh_pda7a")
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D2"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_3xplc")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2"]
shape = SubResource("CapsuleShape3D_3xplc")
[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, -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, -10.0461, 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, -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="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75028, 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, -4.61885, 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, -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="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2356, -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, 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="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, 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,270 @@
[gd_scene load_steps=19 format=3 uid="uid://5xtssqdfilal"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3DPrototypeCubeDark.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="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="4_68dqc"]
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/PlayerPhantomCamera3DTween.tres" id="4_aj0kl"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3D_trigger_area.gd" id="5_h0ouh"]
[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="CapsuleMesh" id="CapsuleMesh_qde4k"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ks21f"]
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_12ynn"]
[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_hml7x"]
script = ExtResource("6_wup4d")
duration = 0.6
transition = 0
ease = 2
[sub_resource type="Resource" id="Resource_pjwwe"]
script = ExtResource("6_wup4d")
duration = 0.3
transition = 1
ease = 2
[sub_resource type="Resource" id="Resource_ex8sv"]
script = ExtResource("6_wup4d")
duration = 0.3
transition = 8
ease = 2
[sub_resource type="Resource" id="Resource_n4qdq"]
script = ExtResource("6_wup4d")
duration = 1.2
transition = 10
ease = 2
[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(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, -0.0548701, 2.5, 5.82771)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
script = ExtResource("2_b2yrt")
[node name="------------------" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, -0.0548701, 2.5, 5.82771)
script = ExtResource("3_m2w30")
priority_override = false
priority = 3
follow_mode = 2
follow_target = NodePath("../PlayerCharacterBody3D")
follow_parameters/target_offset = Vector3(0, 2, 2)
follow_parameters/damping = true
follow_parameters/damping_value = 10.0
look_at_mode = 0
tween_parameters = ExtResource("4_aj0kl")
tween_on_load = false
inactive_update_mode = 0
camera_3D_resource = null
[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0548701, 0.5, 3.82771)
script = ExtResource("4_68dqc")
metadata/_edit_group_ = true
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerCharacterBody3D"]
mesh = SubResource("CapsuleMesh_qde4k")
surface_material_override/0 = SubResource("StandardMaterial3D_ks21f")
[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
shape = SubResource("CapsuleShape3D_12ynn")
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
shape = SubResource("CapsuleShape3D_12ynn")
[node name="-------------------" type="Node" parent="."]
[node name="Tweening Example" type="Node3D" parent="."]
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = SubResource("Resource_hml7x")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = SubResource("Resource_pjwwe")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = SubResource("Resource_ex8sv")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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")
priority_override = false
priority = 0
follow_mode = 0
look_at_mode = 0
tween_parameters = SubResource("Resource_n4qdq")
tween_on_load = true
inactive_update_mode = 0
camera_3D_resource = null
[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

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/CheckerPatternDark.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,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,170 @@
extends CharacterBody2D
@onready var player_area2D = %PlayerArea2D
@onready var player_sprite: Sprite2D = %PlayerSprite
@onready var interaction_prompt: Panel = %InteractionPrompt
@onready var ui_sign:Control = %UISign
@onready var item_pcam2D: PhantomCamera2D = %ItemFocusPhantomCamera2D
@onready var inventory_pcam2D: PhantomCamera2D = %InventoryPhantomCamera2D
@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
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.connect("body_shape_entered", _show_prompt)
player_area2D.connect("body_shape_exited", _hide_prompt)
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)
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:
if _movement_disabled: return
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
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 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 = %UISign
_active_pcam = item_pcam2D
_interactive_object = InteractiveType.ITEM
"Inventory":
_interactive_UI = %UIInventory
_interactive_object = InteractiveType.INVENTORY
_active_pcam = inventory_pcam2D
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,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,66 @@
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()
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, "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.set_priority(20)
player.set_physics_process(false)
tween.tween_property(player, "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.set_priority(0)
player.set_physics_process(true)
tween.tween_property(dialogueLabel3D, "rotation", dialogue_label_initial_rotation, 0.9)
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,81 @@
extends CharacterBody3D
@export var SPEED: float = 5.0
@export var JUMP_VELOCITY: float = 4.5
@export var enable_gravity = true
@onready var _camera: Camera3D = %MainCamera3D
@onready var _player_pcam: PhantomCamera3D = %PlayerPhantomCamera3D
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity: float = 9.8
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)
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
# 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()

View file

@ -0,0 +1,83 @@
extends "player_controller.gd"
@onready var _aim_pcam: PhantomCamera3D = %PlayerAimPhantomCamera3D
@onready var _model: Node3D = $PlayerModel
@onready var _ceiling_pcam: PhantomCamera3D = %CeilingPhantomCamera3D
@export var mouse_sensitivity: float = 0.05
@export var min_yaw: float = -89.9
@export var max_yaw: float = 50
@export var min_pitch: float = 0
@export var max_pitch: float = 360
func _ready() -> void:
super()
if _player_pcam.get_follow_mode() == _player_pcam.Constants.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)
_model.rotation.y = look_direction.angle()
func _unhandled_input(event: InputEvent) -> void:
if _player_pcam.get_follow_mode() == _player_pcam.Constants.FollowMode.THIRD_PERSON:
var active_pcam: PhantomCamera3D
if is_instance_valid(_aim_pcam):
_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_yaw, max_yaw)
# 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_pitch, max_pitch)
# 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: 3 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwep0on2tthn7"
path="res://.godot/imported/PhantomCamera2DSprite.png-6bf2b757da36375026c0e7c928edb9d4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/PhantomCamera2DSprite.png"
dest_files=["res://.godot/imported/PhantomCamera2DSprite.png-6bf2b757da36375026c0e7c928edb9d4.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: 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: 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/CheckerPatternDark.png-fdb2fea143d8c120db563be7371308e4.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/3D/CheckerPatternDark.png"
dest_files=["res://.godot/imported/CheckerPatternDark.png-fdb2fea143d8c120db563be7371308e4.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

View file

@ -0,0 +1,38 @@
[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 = 136.0
offset_top = -255.0
offset_right = 1016.0
offset_bottom = 183.0
grow_vertical = 2
scale = Vector2(1.2, 1.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,84 @@
[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 = -410.0
offset_top = 108.0
offset_right = 137.135
offset_bottom = 474.0
grow_horizontal = 2
scale = Vector2(1.5, 1.5)
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