D3/Char/Player/Shadow/Shadow.tscn
2025-05-10 23:19:52 +08:00

1037 lines
33 KiB
Plaintext

[gd_scene load_steps=47 format=3 uid="uid://clbhclvndl73s"]
[ext_resource type="Script" uid="uid://cy77v0f8ysxdn" path="res://Char/Player/States/Player_State_Machine.gd" id="1_8b1ok"]
[ext_resource type="PackedScene" uid="uid://dd7k3qbsw1bhq" path="res://Char/Char_Components/After_Image/after_image_component.tscn" id="2_decx5"]
[ext_resource type="Script" uid="uid://c3evnbnu55wyg" path="res://Char/Player/States/Player_Idle_Battle.gd" id="3_pu8qh"]
[ext_resource type="PackedScene" uid="uid://dkgg53dn8lr3k" path="res://Char/Char_Components/Petals_Leaves/Sakura_Component.tscn" id="3_q3boy"]
[ext_resource type="Script" uid="uid://ivsb676j6ymo" path="res://Char/Player/States/Player_Run.gd" id="4_8gmn7"]
[ext_resource type="Script" uid="uid://usn2b841v0e" path="res://Char/Player/States/Player_Run_To_Idle.gd" id="5_o8lre"]
[ext_resource type="Script" uid="uid://b3qdqr4f88tel" path="res://Char/Player/States/Player_Jump.gd" id="6_pj6pc"]
[ext_resource type="Script" uid="uid://lip17xk6ycgj" path="res://Char/Player/States/Player_Squat.gd" id="6_rk7vx"]
[ext_resource type="Script" uid="uid://blmxhheiqno3m" path="res://Char/Player/States/Player_Roll.gd" id="7_f3k8f"]
[ext_resource type="Script" uid="uid://dx7idxrq88pha" path="res://Char/Player/States/Player_Fall.gd" id="7_l6ktk"]
[ext_resource type="Script" uid="uid://b3ovdc2fiasfo" path="res://Char/Player/States/Player_Wall_Slide.gd" id="8_0jioi"]
[ext_resource type="Script" uid="uid://b71px30wip3gu" path="res://Char/Player/States/Player_Wall_Jump.gd" id="9_omn5s"]
[ext_resource type="Script" uid="uid://be7lbkwkjnli7" path="res://Char/Player/States/Player_Attack.gd" id="12_qfaga"]
[ext_resource type="Texture2D" uid="uid://lrtnjluxb6yv" path="res://Char/Player/Shadow/Art/attack.png" id="15_ej1a7"]
[ext_resource type="Texture2D" uid="uid://e4kcxlgaihk3" path="res://Char/Player/Shadow/Art/jump.png" id="18_uw7wr"]
[ext_resource type="Texture2D" uid="uid://csiepgsoqspfg" path="res://Char/Player/Shadow/Art/roll.png" id="19_wrj2y"]
[ext_resource type="Texture2D" uid="uid://cdm13dsiyl6v2" path="res://Char/Player/Shadow/Art/wall_jump.png" id="23_d7rnr"]
[ext_resource type="Texture2D" uid="uid://demy7blir6oe3" path="res://Char/Player/Shadow/Art/idle_battle.png" id="23_ghobu"]
[ext_resource type="Texture2D" uid="uid://cd0vubrirnt5c" path="res://Char/Player/Shadow/Art/squat.png" id="28_0cch5"]
[ext_resource type="Texture2D" uid="uid://b1072sap5bgkb" path="res://Char/Player/Shadow/Art/wall_slide.png" id="33_gn6av"]
[ext_resource type="Texture2D" uid="uid://c2ug3srik26lk" path="res://Char/Player/Shadow/Art/run_to_idle.png" id="35_hn0oh"]
[ext_resource type="Texture2D" uid="uid://bcd7fyuacobpj" path="res://Char/Player/Shadow/Art/run.png" id="35_neogm"]
[ext_resource type="Texture2D" uid="uid://co7hggu2mljlb" path="res://Char/Player/Dragon/Art/spr_dragon_attack_0.png" id="67_r4cet"]
[ext_resource type="Texture2D" uid="uid://bged4gw2kxak4" path="res://Char/Player/Dragon/Art/spr_dragon_attack_1.png" id="68_yibrd"]
[ext_resource type="PackedScene" uid="uid://c4ighm8k5x65y" path="res://Char/Player/Player_Components/player_attack_component.tscn" id="72_m8ad3"]
[ext_resource type="PackedScene" uid="uid://dnlln6iv8ksy2" path="res://Char/Player/Player_Components/hit_stop_component.tscn" id="74_nx5vo"]
[ext_resource type="Script" uid="uid://btvbc6o6gwpms" path="res://Char/Char_Components/fx_component.gd" id="74_x0fc2"]
[ext_resource type="PackedScene" uid="uid://mhcxla3f3vac" path="res://Char/Player/Player_Components/hit_queue_processor.tscn" id="75_cx437"]
[ext_resource type="PackedScene" uid="uid://b6sngy5ab6s24" path="res://Char/Player/Player_Components/player_dash_component.tscn" id="75_r8ire"]
[sub_resource type="GDScript" id="GDScript_8meo2"]
script/source = "extends CharacterBody2D
var gravity = ProjectSettings.get_setting(\"physics/2d/default_gravity\")
@onready var floor_raycast = self.get_node(\"Detector/Floor\")
@onready var floor_l_raycast = self.get_node(\"Detector/Floor_L\")
@onready var floor_r_raycast = self.get_node(\"Detector/Floor_R\")
@onready var slope_l_raycast = self.get_node(\"Detector/Slope_L\")
@onready var slope_r_raycast = self.get_node(\"Detector/Slope_R\")
@onready var one_way_floor_raycast = self.get_node(\"Detector/One_Way_Floor\")
@onready var rope_raycast = self.get_node(\"Detector/Rope\")
@onready var rope_raycast_l = self.get_node(\"Detector/Rope_L\")
@onready var rope_raycast_r = self.get_node(\"Detector/Rope_R\")
@onready var wall_raycast = self.get_node(\"Detector/Wall/Wall\")
var can_attack = true
var can_dash = true
var add_attack_up_velocity = true
var can_gameplay_input = true
# 绳索
var _last_rope_contact := false
var rope : Node2D = null
func _physics_process(_delta):
rope_check()
func set_floor_raycasts_enabled(enabled: bool) -> void:
floor_raycast.enabled = enabled
floor_l_raycast.enabled = enabled
floor_r_raycast.enabled = enabled
slope_l_raycast.enabled = enabled
slope_r_raycast.enabled = enabled
func set_can_gameplay_input(value: bool) -> void:
if can_gameplay_input != value:
can_gameplay_input = value
func set_one_way_mask_value(mask_name: String, value: bool)-> void:
if mask_name == 'on_way_floor':
self.set_collision_mask_value(21,value)
elif mask_name == 'rope':
self.set_collision_mask_value(26,value)
elif mask_name == 'all':
self.set_collision_mask_value(26,value)
self.set_collision_mask_value(21,value)
func is_on_slope() -> String:
if floor_raycast.is_colliding() and floor_l_raycast.is_colliding() and floor_r_raycast.is_colliding():
return \"\"
if slope_l_raycast.is_colliding():
return \"L\"
if slope_r_raycast.is_colliding():
return \"R\"
return \"\"
func is_on_ground():
#if self.is_on_floor() and floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding():
if self.is_on_floor() and (floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding() or floor_l_raycast.is_colliding() or floor_r_raycast.is_colliding() or is_on_rope()):
return true
else:
return false
func is_on_one_way_ground():
return one_way_floor_raycast.is_colliding()
func face_wall():
return wall_raycast.is_colliding()
func is_on_rope():
return rope_raycast.is_colliding() or rope_raycast_l.is_colliding() or rope_raycast_r.is_colliding()
func rope_check() -> void:
# 创建射线数组以便统一处理
var raycasts = [rope_raycast, rope_raycast_l, rope_raycast_r]
var has_rope_contact = false
var current_rope = null
var current_collider = null
# 遍历所有射线
for raycast in raycasts:
if raycast.is_colliding():
var collider = raycast.get_collider()
# 如果碰撞到的是绳索部件
if collider:
has_rope_contact = true
current_collider = collider
current_rope = collider.get_parent().get_parent()
break # 找到第一个有效的绳索碰撞就退出循环
# 处理绳索接触逻辑
if has_rope_contact:
if !_last_rope_contact: # 首次接触绳索
_last_rope_contact = true
rope = current_rope
# 每帧都更新绳索接触点
if rope.has_method(\"handle_player_rope_contact\"):
rope.handle_player_rope_contact(current_collider)
elif _last_rope_contact: # 失去接触
_last_rope_contact = false
if rope.has_method(\"handle_player_rope_exit\"):
rope.handle_player_rope_exit()
rope = null
"
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g868p"]
radius = 22.0
height = 60.0
[sub_resource type="Animation" id="Animation_otybg"]
resource_name = "Attack"
length = 0.3
step = 0.01
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("15_ej1a7")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.02, 0.22, 0.23, 0.24, 0.25, 0.26),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Vector2(-13, -29), Vector2(-20, -27), Vector2(-18, -32), Vector2(-14, -32), Vector2(7, -34), Vector2(8, -33), Vector2(0, -34)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:region_rect")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.02, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(488, 26, 61, 57), Rect2(12, 130, 77, 54), Rect2(328, 121, 79, 63), Rect2(15, 217, 71, 70), Rect2(199, 217, 65, 67), Rect2(360, 219, 62, 65), Rect2(518, 216, 45, 68), Rect2(38, 316, 44, 68)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.02),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0.305433, 0.0]
}
[sub_resource type="Animation" id="Animation_sem5a"]
resource_name = "Dash_1"
length = 0.1
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("68_yibrd")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.78814e-06, -30)]
}
[sub_resource type="Animation" id="Animation_mcrul"]
resource_name = "Dash_2"
length = 0.1
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("67_r4cet")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(13, -30)]
}
[sub_resource type="Animation" id="Animation_caa4o"]
resource_name = "Fall"
length = 0.2
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("18_uw7wr")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [Vector2(4, -31), Vector2(1, -39), Vector2(4, -42)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [Rect2(35, 231, 59, 61), Rect2(150, 215, 64, 77), Rect2(273, 209, 62, 83)]
}
[sub_resource type="Animation" id="Animation_wspq3"]
resource_name = "Idle_Battle"
length = 0.8
loop_mode = 1
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2, 0.3, 0.5, 0.6, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Vector2(4, -34), Vector2(4, -33), Vector2(4, -34), Vector2(3, -34), Vector2(2, -33), Vector2(3, -34)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("AnimationPlayer:speed_scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:texture")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("23_ghobu")]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(25, 17, 51, 67), Rect2(125, 17, 51, 67), Rect2(225, 18, 50, 66), Rect2(325, 17, 51, 67), Rect2(25, 117, 51, 67), Rect2(125, 117, 49, 67), Rect2(225, 118, 46, 66), Rect2(325, 117, 48, 67)]
}
[sub_resource type="Animation" id="Animation_rtm6k"]
resource_name = "Jump"
length = 0.2
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("18_uw7wr")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [Vector2(2, -35.2), Vector2(2, -39), Vector2(5, -37), Vector2(7, -35)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [Rect2(41, 121, 38, 71), Rect2(159, 115, 46, 77), Rect2(279, 118, 51, 74), Rect2(399, 123, 54, 69)]
}
[sub_resource type="Animation" id="Animation_sy4nv"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("23_ghobu")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(4, -34)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../Hurt/CollisionShape2D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Sprite2D:region_rect")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Rect2(25, 17, 51, 67)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Sprite2D:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_hwf1e"]
resource_name = "Roll"
length = 0.28
step = 0.02
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("19_wrj2y")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16, 0.24),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [Vector2(2, -41), Vector2(2, -37), Vector2(2, -25), Vector2(2, -29)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.28),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.5, 1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../Hurt/CollisionShape2D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Sprite2D:region_rect")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.22, 0.24, 0.26),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(0, 0, 96, 88), Rect2(104, 0, 96, 88), Rect2(200, 0, 96, 88), Rect2(304, 0, 96, 88), Rect2(0, 104, 96, 88), Rect2(96, 104, 96, 88), Rect2(200, 104, 96, 88), Rect2(304, 104, 96, 88), Rect2(0, 216, 96, 88), Rect2(104, 216, 96, 88), Rect2(208, 216, 88, 88), Rect2(304, 216, 88, 88), Rect2(8, 320, 88, 72), Rect2(104, 320, 88, 72)]
}
[sub_resource type="Animation" id="Animation_arpr5"]
resource_name = "Run"
loop_mode = 1
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("35_neogm")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Vector2(-1, -33), Vector2(-2, -31), Vector2(-2, -30), Vector2(-2, -31.5), Vector2(-2, -32.5), Vector2(-2, -31.5), Vector2(-2, -31), Vector2(-2, -30), Vector2(-2, -31.5)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.3]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(29, 17, 61, 66), Rect2(147, 21, 61, 62), Rect2(266, 21, 61, 62), Rect2(386, 20, 63, 60), Rect2(27, 119, 65, 62), Rect2(148, 117, 63, 66), Rect2(268, 120, 60, 63), Rect2(388, 121, 61, 62), Rect2(30, 220, 61, 60), Rect2(149, 220, 63, 61)]
}
[sub_resource type="Animation" id="Animation_jv5y0"]
resource_name = "Run_To_Idle"
length = 0.35
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("35_hn0oh")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Vector2(-12, -31), Vector2(-6, -31), Vector2(-4, -32), Vector2(-2, -32.5), Vector2(0, -33), Vector2(1, -33), Vector2(4, -34)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../Player_State_Machine/Run_To_Idle")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.05),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"_floor_dust"
}]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Sprite2D:region_rect")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(0, 22, 67, 62), Rect2(116, 22, 58, 62), Rect2(228, 21, 49, 63), Rect2(329, 21, 49, 63), Rect2(35, 119, 43, 65), Rect2(140, 119, 39, 65), Rect2(239, 117, 51, 67)]
}
[sub_resource type="Animation" id="Animation_fdmlk"]
resource_name = "Squat"
length = 0.16
step = 0.02
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("28_0cch5")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [Vector2(-3, -34)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.16),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0.5, 1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(0, 0, 80, 80), Rect2(80, 0, 80, 80), Rect2(160, 0, 80, 80), Rect2(240, 0, 80, 80), Rect2(0, 80, 80, 80), Rect2(80, 80, 80, 80), Rect2(160, 80, 80, 80), Rect2(240, 80, 80, 80)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Sprite2D:rotation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_sybvl"]
resource_name = "Wall_Jump"
length = 0.65
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("23_d7rnr")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [Vector2(2, -27)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("AnimationPlayer:speed_scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [2.5]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(88, 8, 64, 88), Rect2(168, 8, 64, 88), Rect2(248, 8, 72, 88), Rect2(328, 8, 72, 88), Rect2(408, 8, 72, 88), Rect2(8, 104, 72, 96), Rect2(88, 104, 72, 96), Rect2(168, 104, 72, 96), Rect2(248, 104, 72, 96)]
}
[sub_resource type="Animation" id="Animation_fiuvk"]
resource_name = "Wall_Slide"
length = 0.6
loop_mode = 1
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("33_gn6av")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:region_rect")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Rect2(16, 104, 48, 96), Rect2(96, 104, 48, 96), Rect2(176, 104, 48, 96), Rect2(256, 104, 48, 96), Rect2(16, 104, 48, 96), Rect2(96, 104, 48, 96), Rect2(176, 104, 48, 96), Rect2(256, 104, 48, 96), Rect2(16, 104, 48, 96), Rect2(96, 104, 48, 96), Rect2(176, 104, 48, 96), Rect2(256, 104, 48, 96)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:rotation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(2, -30)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("AnimationPlayer:speed_scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.5]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_irhps"]
_data = {
&"Attack": SubResource("Animation_otybg"),
&"Dash_1": SubResource("Animation_sem5a"),
&"Dash_2": SubResource("Animation_mcrul"),
&"Fall": SubResource("Animation_caa4o"),
&"Idle_Battle": SubResource("Animation_wspq3"),
&"Jump": SubResource("Animation_rtm6k"),
&"RESET": SubResource("Animation_sy4nv"),
&"Roll": SubResource("Animation_hwf1e"),
&"Run": SubResource("Animation_arpr5"),
&"Run_To_Idle": SubResource("Animation_jv5y0"),
&"Squat": SubResource("Animation_fdmlk"),
&"Wall_Jump": SubResource("Animation_sybvl"),
&"Wall_Slide": SubResource("Animation_fiuvk")
}
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dcd6n"]
radius = 13.0
height = 60.0
[node name="Player" type="CharacterBody2D" groups=["Player"]]
z_index = 6
collision_mask = 66584576
floor_constant_speed = true
floor_max_angle = 1.0472
floor_snap_length = 10.0
platform_on_leave = 2
platform_floor_layers = 18350080
platform_wall_layers = 2097152
script = SubResource("GDScript_8meo2")
[node name="After_Image_Component" parent="." instance=ExtResource("2_decx5")]
[node name="Sakura_Component" parent="." instance=ExtResource("3_q3boy")]
[node name="Player_State_Machine" type="Node" parent="."]
script = ExtResource("1_8b1ok")
[node name="Idle_Battle" type="Node" parent="Player_State_Machine"]
script = ExtResource("3_pu8qh")
[node name="Run" type="Node" parent="Player_State_Machine"]
script = ExtResource("4_8gmn7")
[node name="Run_To_Idle" type="Node" parent="Player_State_Machine"]
script = ExtResource("5_o8lre")
[node name="Squat" type="Node" parent="Player_State_Machine"]
script = ExtResource("6_rk7vx")
[node name="Roll" type="Node" parent="Player_State_Machine"]
script = ExtResource("7_f3k8f")
[node name="Jump" type="Node" parent="Player_State_Machine"]
script = ExtResource("6_pj6pc")
[node name="Fall" type="Node" parent="Player_State_Machine"]
script = ExtResource("7_l6ktk")
[node name="Wall_Slide" type="Node" parent="Player_State_Machine"]
script = ExtResource("8_0jioi")
[node name="Wall_Jump" type="Node" parent="Player_State_Machine"]
script = ExtResource("9_omn5s")
[node name="Attack" type="Node" parent="Player_State_Machine"]
script = ExtResource("12_qfaga")
[node name="Body_Physics" type="CollisionShape2D" parent="."]
visible = false
position = Vector2(0, -30)
shape = SubResource("CapsuleShape2D_g868p")
[node name="Body_Animation" type="Node2D" parent="."]
metadata/_edit_lock_ = true
[node name="Sprite2D" type="Sprite2D" parent="Body_Animation"]
position = Vector2(4, -34)
texture = ExtResource("23_ghobu")
region_enabled = true
region_rect = Rect2(25, 17, 51, 67)
[node name="AnimationPlayer" type="AnimationPlayer" parent="Body_Animation"]
libraries = {
&"": SubResource("AnimationLibrary_irhps")
}
[node name="Detector" type="Node2D" parent="."]
[node name="Wall" type="Node2D" parent="Detector"]
[node name="Wall" type="RayCast2D" parent="Detector/Wall"]
position = Vector2(0, -34)
target_position = Vector2(26, 0)
collision_mask = 2097152
[node name="Floor" type="RayCast2D" parent="Detector"]
target_position = Vector2(0, 8)
collision_mask = 35127296
[node name="Floor_L" type="RayCast2D" parent="Detector"]
target_position = Vector2(-8, 8)
collision_mask = 18350080
[node name="Floor_R" type="RayCast2D" parent="Detector"]
target_position = Vector2(8, 8)
collision_mask = 18350080
[node name="Rope" type="RayCast2D" parent="Detector"]
target_position = Vector2(0, 15)
collision_mask = 33554432
[node name="Rope_L" type="RayCast2D" parent="Detector"]
target_position = Vector2(-9, 15)
collision_mask = 33554432
[node name="Rope_R" type="RayCast2D" parent="Detector"]
target_position = Vector2(10, 15)
collision_mask = 33554432
[node name="Slope_L" type="RayCast2D" parent="Detector"]
position = Vector2(0, -3)
target_position = Vector2(-15, 0)
collision_mask = 16777216
hit_from_inside = true
[node name="Slope_R" type="RayCast2D" parent="Detector"]
position = Vector2(0, -3)
target_position = Vector2(15, 0)
collision_mask = 16777216
hit_from_inside = true
[node name="One_Way_Floor" type="RayCast2D" parent="Detector"]
visible = false
target_position = Vector2(0, 10)
collision_mask = 1048576
[node name="Hit" type="Node2D" parent="."]
[node name="Player_Attack_Component" parent="Hit" instance=ExtResource("72_m8ad3")]
position = Vector2(0, -25)
[node name="Player_Dash_Component" parent="Hit" instance=ExtResource("75_r8ire")]
position = Vector2(0, -28)
[node name="Hit_Queue_Processor" parent="Hit" instance=ExtResource("75_cx437")]
[node name="Hit_Stop_Component" parent="Hit" instance=ExtResource("74_nx5vo")]
[node name="Hurt" type="Area2D" parent="."]
visible = false
metadata/_edit_lock_ = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurt"]
position = Vector2(0, -30)
shape = SubResource("CapsuleShape2D_dcd6n")
debug_color = Color(0.913161, 0.221281, 0.489025, 0.42)
[node name="Cameras" type="Node2D" parent="."]
visible = false
[node name="Camera" type="Camera2D" parent="Cameras"]
zoom = Vector2(1.3, 1.3)
limit_left = -16
limit_top = 0
limit_right = 1726
limit_bottom = 435
position_smoothing_enabled = true
[node name="Camera_Shake" type="Camera2D" parent="Cameras"]
enabled = false
zoom = Vector2(1.3, 1.3)
[node name="FX_Component" type="Node2D" parent="."]
script = ExtResource("74_x0fc2")
[node name="pos_wall_jump_dust" type="Marker2D" parent="FX_Component"]
position = Vector2(0, -23)