This commit is contained in:
RedisTKey 2026-01-04 21:21:01 +08:00
parent d56af0f0c6
commit a9499e6b27
94 changed files with 293 additions and 5830 deletions

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=15 format=3 uid="uid://bj2318o3y68x2"]
[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"]
[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"]
[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"]
@ -11,13 +11,13 @@
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"]
[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"]
[ext_resource type="Script" uid="uid://b4menkyub4ce7" path="res://addons/reedscene/prop/PropComponent.gd" id="12_m325v"]
[ext_resource type="Script" uid="uid://di41kt2tj34c2" path="res://addons/reedscene/prop/StateManager.gd" id="13_j8v5a"]
[ext_resource type="Script" uid="uid://7lml6d1t5xtq" path="res://addons/reedscene/prop/PropState.gd" id="14_acyif"]
[node name="Game" type="Node2D"]
script = ExtResource("1_2tycc")
[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")]
auto_controlled_avatar = NodePath("../Avatar")
[node name="Avatar" parent="." instance=ExtResource("3_6jw57")]
position = Vector2(283, 253)
collision_mask = 4
@ -45,29 +45,3 @@ script = ExtResource("9_hc6q0")
[node name="Props" type="Node2D" parent="ReedScene"]
script = ExtResource("10_mwuv1")
[node name="PlayerController" parent="ReedScene/Props" node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")]
auto_controlled_avatar = NodePath("../../../Avatar")
[node name="[Prop_0000]" type="Node" parent="ReedScene/Props/PlayerController"]
script = ExtResource("12_m325v")
prop_id = 0
[node name="States" type="Node" parent="ReedScene/Props/PlayerController/[Prop_0000]"]
script = ExtResource("13_j8v5a")
[node name="[ID_0] 修改修改修改" type="Node" parent="ReedScene/Props/PlayerController/[Prop_0000]/States"]
script = ExtResource("14_acyif")
state_id = 0
[node name="[ID_1] 修改名稱" type="Node" parent="ReedScene/Props/PlayerController/[Prop_0000]/States"]
script = ExtResource("14_acyif")
state_id = 1
[node name="[ID_2] 修改名稱3" type="Node" parent="ReedScene/Props/PlayerController/[Prop_0000]/States"]
script = ExtResource("14_acyif")
state_id = 2
[node name="[ID_3] 修改名稱4" type="Node" parent="ReedScene/Props/PlayerController/[Prop_0000]/States"]
script = ExtResource("14_acyif")
state_id = 3

View File

@ -203,6 +203,7 @@ metadata/_custom_type_script = "uid://jeybblac0kg2"
[node name="SceneStaticCamera" parent="Props" instance=ExtResource("14_s6kod")]
position = Vector2(334, 183)
tween_on_load = false
draw_limits = true
[node name="[Prop_0002]" type="Node" parent="Props/SceneStaticCamera"]
script = ExtResource("7_s6kod")

View File

@ -96,6 +96,7 @@ script = ExtResource("8_d42ye")
[node name="Fall" type="LimboState" parent="PlayerHSM/Normal/Airbone"]
unique_name_in_owner = true
script = ExtResource("9_iqoog")
jump_grace_time = 0.16
[node name="Jump" type="LimboState" parent="PlayerHSM/Normal/Airbone"]
unique_name_in_owner = true
@ -145,8 +146,11 @@ dash_speed = 400.0
end_dash_speed = 190.0
climb_hop_velocity_x = 180.0
climb_hop_velocity_y = 334.0
jump_force = 270.0
jump_horizontal_Boost = 235.0
jump_force = 290.0
jump_hold_maxium_time = 0.135
jump_horizontal_Boost = 265.0
light_gravity_threshold = 120.0
light_gravity_mult = 0.6
wall_jump_base_force_x = 260.0
wall_jump_base_force_y = 220.0
fall_maxium_speed = 430.0
@ -184,6 +188,7 @@ metadata/_custom_type_script = "uid://ta2r2bc1nrwe"
position = Vector2(50, -75)
script = ExtResource("32_u7cua")
tween_resource = SubResource("Resource_1a1t3")
draw_limits = true
metadata/_custom_type_script = "uid://bhexx6mj1xv3q"
[node name="Locker" type="Node" parent="PhantomCamera2D" node_paths=PackedStringArray("target_camera")]

View File

@ -1,6 +1,6 @@
extends LimboState
##土狼跳缓存时间
##輸入缓存时间
@export var jump_grace_time: float = .14
var jump_grace_timer: float

View File

@ -2,6 +2,8 @@ extends LimboState
@onready var root: Normal = %Normal
##TODO:后续把JumpGrace在JumpState也写一下或者直接写到AirBoneState目前的JumpGrace由于只能在Fall触发会卡手
func _setup() -> void:
self.add_event_handler(&"completed_jump",_handler_completed_jump)

View File

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

View File

@ -1,7 +0,0 @@
extends ReedTransition
func execute(from: ReedPropState, to: ReedPropState, ctx: Dictionary) -> bool:
super.execute(from,to,ctx)
to._owner.call

View File

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

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,166 +0,0 @@
[gd_scene load_steps=16 format=3 uid="uid://ceelq6qrb41uf"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_47xf2"]
[ext_resource type="Script" uid="uid://csjccrhj5wnx7" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_whx47"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_lii5s"]
[ext_resource type="Script" uid="uid://b8hhnqsugykly" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_jt2lp"]
[ext_resource type="Script" uid="uid://bd046eokvcnu2" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_oc4q1"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_kg7u1"]
[ext_resource type="PackedScene" uid="uid://bhd1kwv2fwj1y" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="7_kut0u"]
[sub_resource type="Resource" id="Resource_8fhct"]
script = ExtResource("2_47xf2")
duration = 0.3
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_7m0fv"]
script = ExtResource("5_jt2lp")
[sub_resource type="Resource" id="Resource_e7t18"]
script = ExtResource("2_47xf2")
duration = 0.3
transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_jogxh"]
script = ExtResource("5_jt2lp")
h_offset = 1.0
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
size = Vector3(1, 10, 20)
[sub_resource type="BoxMesh" id="BoxMesh_bj3re"]
size = Vector3(1, 7, 7)
[sub_resource type="Resource" id="Resource_afrr1"]
script = ExtResource("2_47xf2")
duration = 0.6
transition = 3
ease = 1
[sub_resource type="Resource" id="Resource_ioijp"]
script = ExtResource("5_jt2lp")
[node name="Root" type="Node3D"]
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 0.8660252, 0.5000003, 0, -0.5000003, 0.8660252, 0, 2.250001, 3.0310884)
script = ExtResource("2_whx47")
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_8fhct")
tween_on_load = false
camera_3d_resource = SubResource("Resource_7m0fv")
follow_damping = true
follow_distance = 3.5
vertical_rotation_offset = 0.523599
spring_length = 3.5
align_transform_with_view = Callable()
align_position_with_view = Callable()
align_rotation_with_view = Callable()
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.584, 1.3, 1.1010001)
script = ExtResource("2_whx47")
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_e7t18")
tween_on_load = false
camera_3d_resource = SubResource("Resource_jogxh")
follow_offset = Vector3(0.584, 0.8, -0.399)
follow_distance = 1.5
spring_length = 1.5
align_transform_with_view = Callable()
align_position_with_view = Callable()
align_rotation_with_view = Callable()
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
physics_interpolation_mode = 1
transform = Transform3D(1, 0, 0, 0, 0.8660252, 0.5000003, 0, -0.5000003, 0.8660252, 0, 2.250001, 3.0310884)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("5_oc4q1")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="Wall" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall5" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.133, 3, -6.5)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall6" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, 0)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall7" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 3, 0)
mesh = SubResource("BoxMesh_bj3re")
metadata/_edit_lock_ = true
[node name="Wall2" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall3" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="Wall4" parent="Environment" instance=ExtResource("4_lii5s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
mesh = SubResource("BoxMesh_wsigl")
metadata/_edit_lock_ = true
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
script = ExtResource("2_whx47")
tween_resource = SubResource("Resource_afrr1")
camera_3d_resource = SubResource("Resource_ioijp")
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[WASD] to move"
font = ExtResource("7_kg7u1")
font_size = 48
[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Right Mouse Click] to \"aim\""
font = ExtResource("7_kg7u1")
font_size = 48
[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
modulate = Color(0.294118, 1, 0.631373, 1)
text = "[Space] to toggle PCam"
font = ExtResource("7_kg7u1")
font_size = 48

View File

@ -1,187 +0,0 @@
[gd_scene load_steps=14 format=3 uid="uid://dsfixtpa5xwqt"]
[ext_resource type="Script" uid="uid://bd046eokvcnu2" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_jbmnd"]
[ext_resource type="Script" uid="uid://csjccrhj5wnx7" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_t3gk2"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_b2lea"]
[ext_resource type="Script" uid="uid://b8hhnqsugykly" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_mqo2b"]
[ext_resource type="PackedScene" uid="uid://cb83in8f0tbb1" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_pxkua"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_uuxs3"]
[ext_resource type="Texture2D" uid="uid://bj7h2fc5jx4ax" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_0dyt0"]
[sub_resource type="Resource" id="Resource_pwcgo"]
script = ExtResource("3_b2lea")
[sub_resource type="Resource" id="Resource_ft2w3"]
script = ExtResource("4_mqo2b")
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("7_0dyt0")
uv1_triplanar = true
uv1_world_triplanar = true
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
physics_interpolation_mode = 1
transform = Transform3D(0.99976534, 0.0105280895, -0.018931806, -4.656613e-10, 0.873953, 0.48601043, 0.021662269, -0.4858964, 0.87374794, -0.137901, 4.03222, 6.36446)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
process_priority = 300
process_physics_priority = 300
script = ExtResource("1_jbmnd")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target")]
transform = Transform3D(0.999765, 0.01052809, -0.018931821, -4.6566112e-10, 0.8739531, 0.48601085, 0.021662261, -0.48589647, 0.87374866, -0.137901, 4.03222, 6.36446)
script = ExtResource("2_t3gk2")
priority = 10
look_at_mode = 2
look_at_target = NodePath("../PlayerCharacterBody3D")
tween_resource = SubResource("Resource_pwcgo")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ft2w3")
look_at_damping = true
align_transform_with_view = Callable()
align_rotation_with_view = Callable()
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("5_pxkua")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
[node name="NPCs" type="Node" parent="."]
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.96028, 0.519002, -1.52506)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.59952, 0.519, 4.06618)
mesh = SubResource("CapsuleMesh_2h36r")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
[node name="Environment" type="Node" parent="."]
[node name="Floor" parent="Environment" instance=ExtResource("6_uuxs3")]
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
metadata/_edit_lock_ = true
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.00548, 0.805455, -6.37532)
use_collision = true
radius = 1.71971
height = 2.61091
sides = 32
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.5597, 0.31181, -5.46661)
use_collision = true
radius = 2.77591
height = 1.62362
sides = 32
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96428, 0.31181, 6.6322)
use_collision = true
radius = 1.57419
height = 3.47475
sides = 32
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.3959, 0.201103, 2.71259)
use_collision = true
radius = 1.41311
height = 1.40221
sides = 32
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.02677, 0.201101, 11.6804)
use_collision = true
radius = 2.21673
height = 7.88261
sides = 32
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.8316, 0.805455, -8.78984)
use_collision = true
radius = 0.956285
height = 2.61091
sides = 32
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5989, -1.69814, -6.51262)
use_collision = true
radius = 3.34732
rings = 32
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17742, -0.599204, 8.81048)
use_collision = true
radius = 2.65844
rings = 32
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.4392, -0.599204, -2.42244)
use_collision = true
radius = 2.14606
rings = 32
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.58998, -1.90735e-06, 0.346393)
use_collision = true
inner_radius = 1.3
outer_radius = 2.0
sides = 32
ring_sides = 18
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5502, -1.90735e-06, 7.89765)
use_collision = true
inner_radius = 0.971543
outer_radius = 2.15226
sides = 32
ring_sides = 18
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1202, 6.53866, -12.6331)
use_collision = true
size = Vector3(178.429, 14.0773, 1)
material = SubResource("StandardMaterial3D_auy8m")
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53078, 0.760708, -6.1376)
use_collision = true
size = Vector3(2.64182, 2.52142, 2.30997)
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9646, 0.335247, 8.22829)
use_collision = true
size = Vector3(3.80964, 1.67049, 0.932048)
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.70216, 0.138478, -4.36159)
use_collision = true
size = Vector3(1.53893, 1.27695, 1.80814)
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.1529, 0.138478, 5.20734)
use_collision = true
size = Vector3(4.03502, 1.27695, 5.2198)
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.7692, 1.78638, -1.60318)
use_collision = true
size = Vector3(4.57784, 4.57276, 3.11285)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://c1v786g5agaw5"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" 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

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://cllveybboaqk5"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" 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

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://cecrnq0wnkexh"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" 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

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://euybd2w0bax"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" 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

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://cptfoggk2ok67"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" 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

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

View File

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

View File

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

View File

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

View File

@ -1,16 +0,0 @@
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

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

View File

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

View File

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

View File

@ -1,26 +0,0 @@
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

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

View File

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

View File

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

View File

@ -1,14 +0,0 @@
extends Area3D
@export var path_pcam: PhantomCamera3D
func _ready() -> void:
area_shape_entered.connect(_area_shape_entered)
area_shape_exited.connect(_area_shape_exited)
func _area_shape_entered(area_rid: RID, area: Area3D, area_shape_index: int, local_shape_index: int) -> void:
path_pcam.set_priority(20)
func _area_shape_exited(area_rid: RID, area: Area3D, area_shape_index: int, local_shape_index: int) -> void:
path_pcam.set_priority(0)

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

View File

@ -1,40 +0,0 @@
[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/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,40 +0,0 @@
[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/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwep0on2tthn7"
path="res://.godot/imported/phantom_camera_2d_sprite.png-deab230b83ae03aeb308a08ff66b8dbc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/phantom_camera_2d_sprite.png"
dest_files=["res://.godot/imported/phantom_camera_2d_sprite.png-deab230b83ae03aeb308a08ff66b8dbc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

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

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,43 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cscjjt55iw2cu"
path="res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg"
dest_files=["res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=8.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

View File

@ -1,40 +0,0 @@
[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/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,41 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bj7h2fc5jx4ax"
path.s3tc="res://.godot/imported/checker_pattern_dark.png-70cedad2d3abf4ad6166d6614eefa7fb.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png"
dest_files=["res://.godot/imported/checker_pattern_dark.png-70cedad2d3abf4ad6166d6614eefa7fb.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

View File

@ -1,41 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3mskbmvnpwux"
path.s3tc="res://.godot/imported/target.png-878c5e8d057c8a9a4c2322d4ab88e9ef.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/phantom_camera/examples/textures/3D/target.png"
dest_files=["res://.godot/imported/target.png-878c5e8d057c8a9a4c2322d4ab88e9ef.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

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

View File

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

View File

@ -2,6 +2,7 @@
extends EditorInspectorPlugin
const SLOT_SCENE:= preload("res://addons/reedscene/act/StateDrapSlot.tscn")
const QUICK_CONFIG_SCENE:= preload("res://addons/reedscene/act/StateQuickConfigPanel.tscn")
func _can_handle(object) -> bool:
return object is ActManager
@ -9,7 +10,18 @@ func _can_handle(object) -> bool:
func _parse_begin(object) -> void:
var root := VBoxContainer.new()
var slot := SLOT_SCENE.instantiate()
root.add_child(slot)
var am = object as ActManager
if not am: return
var rs: ReedScene = am._get_owner_scene()
if not rs: return
var size: int = rs.get_prop_count()
var quick_config_panel := QUICK_CONFIG_SCENE.instantiate()
var info := {
"size": size
}
quick_config_panel.init(info)
root.add_child(quick_config_panel)
add_custom_control(root)

View File

@ -22,6 +22,7 @@ theme_override_constants/margin_bottom = 4
layout_mode = 2
[node name="Index" type="Label" parent="MarginContainer/HBC_Main"]
unique_name_in_owner = true
custom_minimum_size = Vector2(24, 0)
layout_mode = 2
text = "1"
@ -44,7 +45,6 @@ mouse_filter = 1
script = ExtResource("2_stte8")
[node name="TextureRect" type="TextureRect" parent="MarginContainer/HBC_Main/VBoxContainer/HBC_Drop/DropArea"]
modulate = Color(0.7, 0.7, 0.7, 1)
layout_mode = 2
mouse_filter = 2
texture = ExtResource("2_lwr2w")
@ -58,6 +58,7 @@ theme_override_constants/margin_right = 4
[node name="StateLabel" type="Label" parent="MarginContainer/HBC_Main/VBoxContainer/HBC_Drop/MarginContainer"]
unique_name_in_owner = true
modulate = Color(0.74509805, 0.74509805, 0.74509805, 1)
custom_minimum_size = Vector2(80, 0)
layout_mode = 2
text = "Drag state node to icon."
@ -107,24 +108,9 @@ theme_override_constants/margin_bottom = 2
[node name="Context" type="RichTextLabel" parent="MarginContainer/HBC_Main/VBoxContainer/MarginContainer"]
unique_name_in_owner = true
modulate = Color(0.74509805, 0.74509805, 0.74509805, 1)
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
bbcode_enabled = true
text = "Information will be show here."
scroll_active = false
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/HBC_Main/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HBC_Main/VBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="AddButton" type="Button" parent="MarginContainer/HBC_Main/VBoxContainer/VBoxContainer2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "+"
[node name="DeleteButton" type="Button" parent="MarginContainer/HBC_Main/VBoxContainer/VBoxContainer2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "-"

View File

@ -9,8 +9,11 @@ extends Control
@onready var cb_use_trans: CheckBox = %CB_UseTrans
@onready var index: Label = %Index
var _cached_single_act: SingleAct = null
var _cached_prop_id: int = -1
var _cached_info: Dictionary
const NORMAL_STATE_LABLE: String = "Drag state node to icon."
const NORMAL_CONTEXT: String = "Information will be show here."
@ -27,6 +30,8 @@ func _ready() -> void:
if drop_area:
drop_area.node_path_dropped.connect(_on_node_path_dropped)
func init(index: int) -> void:
self.index.text = str(index)
func _on_node_path_dropped(path: NodePath) -> void:
var state := StateResolveUtils.get_state_node_from_path(path)
@ -41,36 +46,30 @@ func _on_node_path_dropped(path: NodePath) -> void:
_reset_to_default()
return
##缓存一遍有效的info
_cached_info = info
# 创建 / 更新 cached
_cached_single_act = SingleAct.new()
_cached_single_act.state_id = state.state_id
_cached_single_act.use_trans = false
_cached_single_act.use_trans = cb_use_trans.button_pressed
_cached_single_act.context = {}
_cached_prop_id = int(info.prop_id)
# 启用 CheckBox
cb_use_trans.disabled = false
cb_use_trans.button_pressed = _cached_single_act.use_trans
## 启用 CheckBox
#cb_use_trans.disabled = false
#cb_use_trans.button_pressed = _cached_single_act.use_trans
# 直接用 info + cached 刷 UI
_set_context(info)
_update_context(info)
func _on_use_trans_toggled(pressed: bool) -> void:
if _cached_single_act == null:
cb_use_trans.button_pressed = false
return
# 如果存在就改,不存在無事發生
if _cached_single_act:
_cached_single_act.use_trans = pressed
# ✅ 只改 cached
_cached_single_act.use_trans = pressed
# 重新 resolve 一次 info简单、直观
var state := _resolve_state_from_cached()
if state == null:
return
var info := StateResolveUtils.resolve_state_display_info(state)
_set_context(info)
_update_context()
func _resolve_state_from_path(path: NodePath) -> ReedPropState:
@ -92,21 +91,14 @@ func _reset_to_default() ->void:
context.text = NORMAL_CONTEXT
context.modulate = COLOR_IDLE
_reset_cb_use_trans()
## 初始化use trans 的 check box
func _reset_cb_use_trans() ->void:
cb_use_trans.disabled = true
cb_use_trans.button_pressed = false
if not cb_use_trans.toggled.is_connected(_on_use_trans_toggled):
cb_use_trans.toggled.connect(_on_use_trans_toggled)
## 初始化启用use trans
func _enable_cb_use_trans() -> void:
cb_use_trans.disabled = false
cb_use_trans.button_pressed = _cached_single_act.use_trans
## 创建一个CachedAct
func _build_cached_act(state: ReedPropState, info: Dictionary) -> void:
@ -126,9 +118,14 @@ func _clear_cached_act() -> void:
_cached_prop_id = -1
## 设置文本
func _set_context(info) ->void:
if _cached_single_act == null:
return
func _update_context(info:Dictionary = {}) ->void:
## 如果没有传入有效的info且没有cached过act则直接返回
## TODO:这里后续应该有一个报错的Message
if info == {} :
if _cached_info == {}:
return
else:
info = _cached_info
context.clear()

View File

@ -0,0 +1,61 @@
@tool
extends PanelContainer
@onready var spawn_slot_root: VBoxContainer = %SpawnSlotRoot
@onready var add_button: Button = %AddButton
@onready var remove_button: Button = %RemoveButton
var _inited: bool = false
var _max_length: int = -1
## 默认的Slot
const SLOT: PackedScene = preload("res://addons/reedscene/act/StateDrapSlot.tscn")
func _ready() -> void:
if not Engine.is_editor_hint():
return
# 连接按钮
add_button.pressed.connect(_on_add_pressed)
remove_button.pressed.connect(_on_remove_pressed)
# 初始保证至少有一个 Slot
if spawn_slot_root.get_child_count() == 0:
_add_slot()
_update_remove_button_state()
func init(info:Dictionary) -> void:
_inited = true
if info.has("size"):
self._max_length = info.get("size") as int
func _on_add_pressed() -> void:
_add_slot()
func _on_remove_pressed() -> void:
_remove_slot()
func _add_slot() -> void:
if spawn_slot_root.get_child_count() >= _max_length:
return
var slot := SLOT.instantiate()
spawn_slot_root.add_child(slot)
slot.owner = get_tree().edited_scene_root # 编辑器可保存
slot.init(spawn_slot_root.get_children().size())
_update_remove_button_state()
func _remove_slot() -> void:
var count := spawn_slot_root.get_child_count()
if count <= 1:
return
var last := spawn_slot_root.get_child(count - 1)
last.queue_free()
_update_remove_button_state()
func _update_remove_button_state() -> void:
remove_button.disabled = spawn_slot_root.get_child_count() <= 1

View File

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

View File

@ -0,0 +1,66 @@
[gd_scene load_steps=2 format=3 uid="uid://bwq0mho8g44av"]
[ext_resource type="Script" uid="uid://dynra0wgb72s2" path="res://addons/reedscene/act/StateQuickConfigPanel.gd" id="1_8gjqu"]
[node name="StateQuickConfigPanel" type="PanelContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_8gjqu")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
theme_override_constants/margin_left = 5
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 4
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="Header" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "State Quick Config Panel"
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 300)
layout_mode = 2
size_flags_vertical = 3
[node name="SpawnSlotRoot" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
bbcode_enabled = true
text = "Context"
fit_content = true
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="AddButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 24)
layout_mode = 2
size_flags_horizontal = 3
text = "Add"
[node name="RemoveButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
text = "Remove"
[node name="InsertButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
text = "Insert"

View File

@ -62,7 +62,7 @@ static func resolve_state_display_info(state: ReedPropState) -> Dictionary:
# --------------------
# State 信息
# --------------------
result.state_name = state.name
result.state_name = state.get_state_name()
result.state_id = str(state.state_id)
# --------------------

View File

@ -2,8 +2,7 @@
[ext_resource type="Script" uid="uid://bi8dmt4ypmbhq" path="res://addons/reedscene/dock/SceneIDMainPanel.gd" id="1_vunhl"]
[node name="Control" type="Control"]
layout_mode = 3
[node name="Control" type="PanelContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
@ -14,12 +13,7 @@ size_flags_vertical = 3
script = ExtResource("1_vunhl")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
layout_mode = 2
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 15
@ -28,7 +22,10 @@ theme_override_constants/margin_bottom = 10
[node name="VBC_Main" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/VBC_Main"]
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/VBC_Main"]
layout_mode = 2
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/VBC_Main/PanelContainer"]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
text = "ReedScene Manage Panel
@ -57,11 +54,15 @@ text = "Load Database"
custom_minimum_size = Vector2(60, 0)
layout_mode = 2
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBC_Main/VBoxContainer"]
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/VBC_Main/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="GC_Rows" type="GridContainer" parent="MarginContainer/VBC_Main/VBoxContainer/ScrollContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBC_Main/VBoxContainer/PanelContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="GC_Rows" type="GridContainer" parent="MarginContainer/VBC_Main/VBoxContainer/PanelContainer/ScrollContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3

View File

@ -18,6 +18,24 @@ var _owner
var _owner_prop_comp
## 是否已经初始化
var _inited: bool = false
## State的真实name默认会去掉ID
var _true_name: StringName = ""
func _enter_tree() -> void:
_true_name = _get_true_name()
if not self.renamed.is_connected(_on_renamed):
self.renamed.connect(_on_renamed)
## 在命名修改的时候会自动的更正缓存的TrueName
func _on_renamed() -> void:
_true_name = _get_true_name()
func _get_true_name() -> String:
var s = get_parent()
if s and s.has_method(&"_strip_id_prefix"):
return s._strip_id_prefix(self.name)
return self.name
##初始化State
func init(owner: Node, prop_comp: Node) -> bool:
@ -55,3 +73,7 @@ func on_enter(_from: ReedPropState, _ctx: Dictionary) -> void:
##State退出
func on_exit(_to: ReedPropState, _ctx: Dictionary) -> void:
pass
## 外部可以通过state的引用返回真实名
func get_state_name() -> StringName:
return _true_name

View File

@ -11,15 +11,38 @@ const IS_PROP_STATES_ROOT := true
@export var auto_refresh: bool = true
func _enter_tree() -> void:
if not Engine.is_editor_hint():
return
_connect_editor_signals()
_refresh_states()
func _ready() -> void:
if not Engine.is_editor_hint():
return
child_entered_tree.connect(_on_child_entered_tree)
child_exiting_tree.connect(_on_child_exiting_tree)
child_order_changed.connect(_on_child_order_changing)
## 链接所有的功能信号
func _connect_editor_signals() -> void:
if not child_entered_tree.is_connected(_on_child_entered_tree):
child_entered_tree.connect(_on_child_entered_tree)
_refresh_states()
if not child_exiting_tree.is_connected(_on_child_exiting_tree):
child_exiting_tree.connect(_on_child_exiting_tree)
if not child_order_changed.is_connected(_on_child_order_changing):
child_order_changed.connect(_on_child_order_changing)
## 断开所有的功能型号
func _disconnect_editor_signals() -> void:
if child_entered_tree.is_connected(_on_child_entered_tree):
child_entered_tree.disconnect(_on_child_entered_tree)
if child_exiting_tree.is_connected(_on_child_exiting_tree):
child_exiting_tree.disconnect(_on_child_exiting_tree)
if child_order_changed.is_connected(_on_child_order_changing):
child_order_changed.disconnect(_on_child_order_changing)
## 如果子節點進入管理器
func _on_child_entered_tree(node: Node) -> void:

View File

@ -3,9 +3,22 @@ extends EditorPlugin
var inspector_plugins: Array[EditorInspectorPlugin] = []
const AUTOLOAD_REED_SCENE_NAME: StringName = &"ReedSceneRegistry"
## Autoload的SceneRegistery的Name
const AUTOLOAD_REED_SCENE_NAME : StringName = &"ReedSceneRegistry"
## Autoload的SceneRegistery的PATH
const AUTOLOAD_REED_SCENE_PATH := "res://addons/reedscene/scene/SceneRegistry.gd"
## Act的Inspector輔助面板
const ACT_INSPECTOR_SCENE_PATH := "res://addons/reedscene/act/ActManagerInspector.gd"
## ID的Inspector輔助面板
const ID_INSEPCTOR_SCENE_PATH := "res://addons/reedscene/scene/ReedSceneIDInspector.gd"
## SceneID注冊查詢面板的位置
const SCENE_ID_MAIN_PANEL_PATH := "res://addons/reedscene/dock/SceneIDMainPanel.tscn"
## 配置Json的地址
const CONFIG_JSON_PATH:= "res://addons/reedscene/plugin_config.json"
var main_screen: Control
@ -25,13 +38,11 @@ func _exit_tree() -> void:
_unregister_inspectors()
# ======================================================
# Inspector Plugins
# ======================================================
## 注冊Inspector
func _register_inspectors() -> void:
# Inspector 1ActManager
var act_inspector := preload(
"res://addons/reedscene/act/ActManagerInspector.gd"
ACT_INSPECTOR_SCENE_PATH
).new()
add_inspector_plugin(act_inspector)
@ -39,23 +50,20 @@ func _register_inspectors() -> void:
# Inspector 2ReedSceneID
var scene_id_inspector := preload(
"res://addons/reedscene/scene/ReedSceneIDInspector.gd"
ID_INSEPCTOR_SCENE_PATH
).new()
add_inspector_plugin(scene_id_inspector)
inspector_plugins.append(scene_id_inspector)
## 注銷Inspector
func _unregister_inspectors() -> void:
for plugin in inspector_plugins:
remove_inspector_plugin(plugin)
inspector_plugins.clear()
# ======================================================
# Autoload
# ======================================================
## 注冊Autoload
func _ensure_autoload() -> void:
var key := "autoload/%s" % AUTOLOAD_REED_SCENE_NAME
if not ProjectSettings.has_setting(key):
@ -64,26 +72,22 @@ func _ensure_autoload() -> void:
AUTOLOAD_REED_SCENE_PATH
)
## 注銷Autoload
func _remove_autoload() -> void:
var key := "autoload/%s" % AUTOLOAD_REED_SCENE_NAME
if ProjectSettings.has_setting(key):
remove_autoload_singleton(AUTOLOAD_REED_SCENE_NAME)
# ======================================================
# Main Screen
# ======================================================
## 加載插件編輯面板
func _load_mainscreen() -> void:
main_screen = preload(
"res://addons/reedscene/dock/SceneIDMainPanel.tscn"
SCENE_ID_MAIN_PANEL_PATH
).instantiate()
EditorInterface.get_editor_main_screen().add_child(main_screen)
main_screen.visible = false
## 注銷插件編輯面板
func _unload_mainscreen() -> void:
if main_screen:
main_screen.queue_free()
@ -117,3 +121,7 @@ func _get_plugin_icon() -> Texture2D:
"Node",
"EditorIcons"
)
## 通過Json獲取到Plugin的基本配置
func _get_config_data() -> Dictionary:
return {}

View File

@ -292,3 +292,7 @@ func get_scene_id() -> int:
return get_scene_id_comp().scene_id
return -1
## Prop的数量
func get_prop_count() -> int:
return get_prop_map().values().size()

View File

@ -1,4 +1,7 @@
''' 用來儲存所有的SceneID的數據集
'''
SceneID的數據集
1. DataBase
2. ID Database
'''
@tool
@ -9,6 +12,7 @@ var next_id: int = 10000
@export var entries: Array[SceneIDEntry] = []
## 請求一個ID
func request_new_id(prefix: int) -> int:
##合理性檢測
if prefix < 0: return -1
@ -29,6 +33,7 @@ func request_new_id(prefix: int) -> int:
return candidate
## 注冊SceneID
func register_scene_id(
scene_path: String,
uid: String,
@ -49,7 +54,7 @@ func register_scene_id(
emit_changed()
return true
## 檢查SceneID 是否有效
func validate_scene_id(
scene_id: int,
scene_uid: String,
@ -82,5 +87,4 @@ func validate_scene_id(
% [scene_id, matched_entry.scene_path, scene_path]
)
# ✅ 无论有没有 warning都返回 result
return result

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://p0oxphym6oqg"
path="res://.godot/imported/scene.svg-8a320ae079b96f7816a22c69b2f9dc97.ctex"
path="res://.godot/imported/scene.svg-c24b5af00be10e23fb72b4a388d5aa0d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/reedscene/scene/scene.svg"
dest_files=["res://.godot/imported/scene.svg-8a320ae079b96f7816a22c69b2f9dc97.ctex"]
source_file="res://addons/reedscene/scene/icon/scene.svg"
dest_files=["res://.godot/imported/scene.svg-c24b5af00be10e23fb72b4a388d5aa0d.ctex"]
[params]

View File

@ -1 +0,0 @@
extends Node

View File

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

View File

@ -1 +0,0 @@
class_name GameViewContainer extends SubViewportContainer

View File

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