From 897b7a230ee6a9d4a5d89d74da2d8ed39c10599b Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Thu, 6 Mar 2025 03:26:12 +0800 Subject: [PATCH] =?UTF-8?q?fist=20skill04=EF=BC=8C=20long=20skill01?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/skill_core/hero01_soul_hit01.tres | 1 + config/skill_core/hero01_soul_slash.tres | 1 + .../hero01_basic_air_flash.tres | 1 + .../hero01_basic_flash.tres | 1 + .../hero01_fist_air_attack01.tres | 25 ++-- .../hero01_fist_air_attack02.tres | 25 ++-- .../hero01_fist_air_attack03.tres | 23 ++-- .../hero01_fist_air_skill04.tres | 21 ++-- .../hero01_fist_air_skill_charging.tres | 1 + .../hero01_fist_attack05.tres | 1 + .../hero01_fist_skill03.tres | 1 + .../hero01_fist_skill04.tres | 35 ++++++ .../hero01_fist_skill_special01.tres | 1 + .../hero01_long_air_attack03.tres | 1 + .../hero01_long_air_skill02.tres | 1 + .../hero01_long_skill01.tres | 30 ++--- .../hero01_long_stab02.tres | 1 + .../hero01_long_stab03.tres | 1 + .../hero01_short_skill01.tres | 1 + .../hero01_short_stab01.tres | 1 + render/trail_mesh/flare_blunt_slash.tres | 2 +- .../character/hero01_fist_skill01.aseprite | Bin 47481 -> 55565 bytes .../character/hero01_fist_skill01.png | Bin 20570 -> 23611 bytes .../character/hero01_long_skill01.aseprite | Bin 26942 -> 26200 bytes .../character/hero01_long_skill01.png | Bin 16897 -> 14525 bytes resource/mesh_library/mesh_library_main.tres | 2 +- .../hero01_fist_air_attack01.tres | 3 +- .../hero01_fist_air_attack02.tres | 3 +- .../hero01_fist_air_skill03.tres | 10 +- .../hero01_fist_air_skill04.tres | 2 +- .../skill_animation/hero01_fist_skill01.tres | 3 +- .../hero01_fist_skill01_add.tres | 9 +- .../skill_animation/hero01_fist_skill04.tres | 114 ++++++++++++++++++ .../skill_animation/hero01_long_skill01.tres | 42 ++++--- .../animation_library.tres | 4 +- scene/character/character.tscn | 17 ++- scene/effect/particle/_particle_dash1.tscn | 4 +- scene/effect/particle/_particle_fist2.tscn | 10 +- .../particle/_particle_hit_ground_heavy.tscn | 10 +- .../particle/_particle_hit_ground_normal.tscn | 6 +- .../particle/_particle_slash_blunt1.tscn | 7 +- .../particle/_particle_slash_blunt2.tscn | 7 +- scene/effect/particle/_particle_stab3.tscn | 1 - .../particle/bullet_hero01_short_stab01.tscn | 1 - .../particle/hero01_fist_air_attack01.tscn | 10 ++ .../particle/hero01_fist_air_attack02.tscn | 10 ++ .../particle/hero01_fist_air_skill01_1.tscn | 2 +- .../particle/hero01_fist_air_skill03_1.tscn | 10 ++ .../particle/hero01_fist_air_skill03_2.tscn | 10 ++ .../particle/hero01_fist_air_skill03_3.tscn | 10 ++ .../effect/particle/hero01_fist_attack01.tscn | 2 +- .../effect/particle/hero01_fist_attack02.tscn | 2 +- .../effect/particle/hero01_fist_attack03.tscn | 2 +- .../effect/particle/hero01_fist_attack04.tscn | 4 +- .../effect/particle/hero01_fist_attack05.tscn | 2 +- .../effect/particle/hero01_fist_skill01.tscn | 10 ++ .../effect/particle/hero01_fist_skill03.tscn | 10 -- .../particle/hero01_long_air_skill01.tscn | 2 +- .../effect/particle/hero01_long_skill01.tscn | 6 - .../particle/hero01_long_skill01_1.tscn | 10 ++ .../particle/hero01_long_skill01_2.tscn | 10 ++ .../effect/particle/hero01_long_skill02.tscn | 2 +- .../effect/particle/particle_blood_decal.tscn | 6 +- .../particle/particle_blood_fragment.tscn | 2 +- .../particle/particle_common_fragment.tscn | 2 +- scene/effect/particle/particle_debug_box.tscn | 5 +- .../particle/particle_debug_cylinder.tscn | 5 +- scene/launcher.tscn | 2 +- script/character/move.gd | 6 +- script/character/player/combo.gd | 2 +- script/character/skill.gd | 2 +- script/character/view.gd | 2 +- script/config/skill_cfg.gd | 22 ++-- script/manager/camera_manager.gd | 13 +- 74 files changed, 437 insertions(+), 176 deletions(-) create mode 100644 config/skill_player_weapon/hero01_fist_skill04.tres create mode 100644 resource/skill_animation/hero01_fist_skill04.tres create mode 100644 scene/effect/particle/hero01_fist_air_attack01.tscn create mode 100644 scene/effect/particle/hero01_fist_air_attack02.tscn create mode 100644 scene/effect/particle/hero01_fist_air_skill03_1.tscn create mode 100644 scene/effect/particle/hero01_fist_air_skill03_2.tscn create mode 100644 scene/effect/particle/hero01_fist_air_skill03_3.tscn create mode 100644 scene/effect/particle/hero01_fist_skill01.tscn delete mode 100644 scene/effect/particle/hero01_fist_skill03.tscn delete mode 100644 scene/effect/particle/hero01_long_skill01.tscn create mode 100644 scene/effect/particle/hero01_long_skill01_1.tscn create mode 100644 scene/effect/particle/hero01_long_skill01_2.tscn diff --git a/config/skill_core/hero01_soul_hit01.tres b/config/skill_core/hero01_soul_hit01.tres index 8051b92..3e463d4 100644 --- a/config/skill_core/hero01_soul_hit01.tres +++ b/config/skill_core/hero01_soul_hit01.tres @@ -20,6 +20,7 @@ free_lock = false ignore_push = false is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "none" diff --git a/config/skill_core/hero01_soul_slash.tres b/config/skill_core/hero01_soul_slash.tres index 24e48af..0be9dad 100644 --- a/config/skill_core/hero01_soul_slash.tres +++ b/config/skill_core/hero01_soul_slash.tres @@ -21,6 +21,7 @@ free_lock = false ignore_push = false is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 sprite_frames = ExtResource("3_7738e") diff --git a/config/skill_player_basic/hero01_basic_air_flash.tres b/config/skill_player_basic/hero01_basic_air_flash.tres index a018706..22c81e1 100644 --- a/config/skill_player_basic/hero01_basic_air_flash.tres +++ b/config/skill_player_basic/hero01_basic_air_flash.tres @@ -22,6 +22,7 @@ free_lock = true ignore_push = true is_lock_x = false is_lock_x_move = false +is_lock_x_move_sub = false range = 0.0 warn_type = 0 sprite_frames = ExtResource("3_ciqr7") diff --git a/config/skill_player_basic/hero01_basic_flash.tres b/config/skill_player_basic/hero01_basic_flash.tres index daab31d..48aa182 100644 --- a/config/skill_player_basic/hero01_basic_flash.tres +++ b/config/skill_player_basic/hero01_basic_flash.tres @@ -22,6 +22,7 @@ free_lock = true ignore_push = true is_lock_x = false is_lock_x_move = false +is_lock_x_move_sub = false range = 0.0 warn_type = 0 sprite_frames = ExtResource("3_i6jjr") diff --git a/config/skill_player_weapon/hero01_fist_air_attack01.tres b/config/skill_player_weapon/hero01_fist_air_attack01.tres index b9d4fe9..348804f 100644 --- a/config/skill_player_weapon/hero01_fist_air_attack01.tres +++ b/config/skill_player_weapon/hero01_fist_air_attack01.tres @@ -2,7 +2,7 @@ [ext_resource type="Resource" uid="uid://dib6g7t6p5ac2" path="res://config/attack/blunt_normal_hit.tres" id="1_v7ajo"] [ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_ipoga"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_v1wiv"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_v1wiv"] [ext_resource type="Animation" uid="uid://chj3rlh6krt66" path="res://resource/skill_animation/hero01_fist_air_attack01.tres" id="4_nfkff"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="5_7yyxp"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_aclp5"] @@ -12,25 +12,24 @@ script = ExtResource("3_v1wiv") weapon = ExtResource("6_aclp5") action = "attack_light" name = "" +sub_character_count = 0 skill_animation = ExtResource("4_nfkff") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_v7ajo") -attack1_box = ExtResource("2_ipoga") -attack1_with_pause_frame = true -attack1_with_stop = true -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 10 stance_to = 11 break_level = 3 is_charging = false +attack1 = ExtResource("1_v7ajo") +attack1_box = ExtResource("2_ipoga") +attack1_with_stop = true +attack2_with_stop = false mp_cost = 0 mp_sub_cost = false +free_lock = false +ignore_push = false +is_lock_x = false +is_lock_x_move = false +is_lock_x_move_sub = true +range = 0.0 warn_type = 0 -with_stop = false -is_lock_x = true -refresh_animation = false sprite_frames = ExtResource("5_7yyxp") animation_name = "fist_air_attack01" diff --git a/config/skill_player_weapon/hero01_fist_air_attack02.tres b/config/skill_player_weapon/hero01_fist_air_attack02.tres index 72e728e..b23e79b 100644 --- a/config/skill_player_weapon/hero01_fist_air_attack02.tres +++ b/config/skill_player_weapon/hero01_fist_air_attack02.tres @@ -2,7 +2,7 @@ [ext_resource type="Resource" uid="uid://dib6g7t6p5ac2" path="res://config/attack/blunt_normal_hit.tres" id="1_cut8n"] [ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_8enki"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_agxba"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_agxba"] [ext_resource type="Animation" uid="uid://dia1xwl6foafg" path="res://resource/skill_animation/hero01_fist_air_attack02.tres" id="4_jbb00"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="5_byipk"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_ad202"] @@ -12,25 +12,24 @@ script = ExtResource("3_agxba") weapon = ExtResource("6_ad202") action = "attack_light" name = "" +sub_character_count = 0 skill_animation = ExtResource("4_jbb00") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_cut8n") -attack1_box = ExtResource("2_8enki") -attack1_with_pause_frame = true -attack1_with_stop = true -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 11 stance_to = 12 break_level = 3 is_charging = false +attack1 = ExtResource("1_cut8n") +attack1_box = ExtResource("2_8enki") +attack1_with_stop = true +attack2_with_stop = false mp_cost = 0 mp_sub_cost = false -warn_type = 0 -with_stop = false +free_lock = false +ignore_push = false is_lock_x = true -refresh_animation = false +is_lock_x_move = false +is_lock_x_move_sub = true +range = 0.0 +warn_type = 0 sprite_frames = ExtResource("5_byipk") animation_name = "fist_air_attack02" diff --git a/config/skill_player_weapon/hero01_fist_air_attack03.tres b/config/skill_player_weapon/hero01_fist_air_attack03.tres index 99f3db3..1a442a7 100644 --- a/config/skill_player_weapon/hero01_fist_air_attack03.tres +++ b/config/skill_player_weapon/hero01_fist_air_attack03.tres @@ -12,25 +12,24 @@ script = ExtResource("3_ghxjs") weapon = ExtResource("6_t7m8t") action = "attack_light" name = "" +sub_character_count = 0 skill_animation = ExtResource("4_y802t") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_w8lg4") -attack1_box = ExtResource("2_2gnst") -attack1_with_pause_frame = true -attack1_with_stop = true -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 12 stance_to = 13 break_level = 3 is_charging = false +attack1 = ExtResource("1_w8lg4") +attack1_box = ExtResource("2_2gnst") +attack1_with_stop = true +attack2_with_stop = false mp_cost = 0 mp_sub_cost = false -warn_type = 0 -with_stop = false +free_lock = false +ignore_push = false is_lock_x = true -refresh_animation = false +is_lock_x_move = false +is_lock_x_move_sub = true +range = 0.0 +warn_type = 0 sprite_frames = ExtResource("5_pslv2") animation_name = "fist_air_attack03" diff --git a/config/skill_player_weapon/hero01_fist_air_skill04.tres b/config/skill_player_weapon/hero01_fist_air_skill04.tres index b0adbbb..5ad618f 100644 --- a/config/skill_player_weapon/hero01_fist_air_skill04.tres +++ b/config/skill_player_weapon/hero01_fist_air_skill04.tres @@ -2,7 +2,7 @@ [ext_resource type="Resource" uid="uid://dqgmfpqv2vn3v" path="res://config/attack/blunt_mid_hit_down_back.tres" id="1_re6l4"] [ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_anqor"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_ty4r5"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_ty4r5"] [ext_resource type="Animation" uid="uid://c2esjf8ouf22c" path="res://resource/skill_animation/hero01_fist_air_skill04.tres" id="4_p4vkr"] [ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_xtg56"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_on1ob"] @@ -12,19 +12,24 @@ script = ExtResource("3_ty4r5") weapon = ExtResource("6_on1ob") action = "attack_heavy" name = "" +sub_character_count = 0 skill_animation = ExtResource("4_p4vkr") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_re6l4") -attack1_box = ExtResource("2_anqor") stance_from = 12 stance_to = 10 break_level = 3 is_charging = false +attack1 = ExtResource("1_re6l4") +attack1_box = ExtResource("2_anqor") +attack1_with_stop = false +attack2_with_stop = false mp_cost = 0 +mp_sub_cost = false +free_lock = false +ignore_push = false +is_lock_x = true +is_lock_x_move = false +is_lock_x_move_sub = true +range = 0.0 warn_type = 0 -with_stop = false -refresh_animation = false sprite_frames = ExtResource("5_xtg56") animation_name = "fist_air_skill04" diff --git a/config/skill_player_weapon/hero01_fist_air_skill_charging.tres b/config/skill_player_weapon/hero01_fist_air_skill_charging.tres index 48ca6d9..48f9711 100644 --- a/config/skill_player_weapon/hero01_fist_air_skill_charging.tres +++ b/config/skill_player_weapon/hero01_fist_air_skill_charging.tres @@ -31,6 +31,7 @@ free_lock = false ignore_push = true is_lock_x = false is_lock_x_move = false +is_lock_x_move_sub = false range = 0.0 warn_type = 0 animation_name = "fist_air_skill_charging" diff --git a/config/skill_player_weapon/hero01_fist_attack05.tres b/config/skill_player_weapon/hero01_fist_attack05.tres index 54de87c..4d33b96 100644 --- a/config/skill_player_weapon/hero01_fist_attack05.tres +++ b/config/skill_player_weapon/hero01_fist_attack05.tres @@ -27,6 +27,7 @@ free_lock = false ignore_push = false is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "fist_attack05" diff --git a/config/skill_player_weapon/hero01_fist_skill03.tres b/config/skill_player_weapon/hero01_fist_skill03.tres index fe9f504..47817d3 100644 --- a/config/skill_player_weapon/hero01_fist_skill03.tres +++ b/config/skill_player_weapon/hero01_fist_skill03.tres @@ -27,6 +27,7 @@ free_lock = false ignore_push = true is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "fist_skill03" diff --git a/config/skill_player_weapon/hero01_fist_skill04.tres b/config/skill_player_weapon/hero01_fist_skill04.tres new file mode 100644 index 0000000..4e27b50 --- /dev/null +++ b/config/skill_player_weapon/hero01_fist_skill04.tres @@ -0,0 +1,35 @@ +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://c4qwbcc5ut6ki"] + +[ext_resource type="Resource" uid="uid://by6jd5xqjml2m" path="res://config/attack/blunt_starfall_1.tres" id="1_7hju6"] +[ext_resource type="Resource" uid="uid://qp5sy3u3rlpe" path="res://config/attack_box/box_high.tres" id="2_7hju6"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_6gc3n"] +[ext_resource type="Animation" uid="uid://dh1d2vg2hd1lr" path="res://resource/skill_animation/hero01_fist_skill04.tres" id="4_7hju6"] +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_6gc3n"] +[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_pwj34"] + +[resource] +script = ExtResource("3_6gc3n") +weapon = ExtResource("5_pwj34") +action = "attack_heavy" +name = "" +sub_character_count = 0 +skill_animation = ExtResource("4_7hju6") +stance_from = 4 +stance_to = 10 +break_level = 3 +is_charging = false +attack1 = ExtResource("1_7hju6") +attack1_box = ExtResource("2_7hju6") +attack1_with_stop = false +attack2_with_stop = false +mp_cost = 0 +mp_sub_cost = false +free_lock = false +ignore_push = true +is_lock_x = true +is_lock_x_move = false +is_lock_x_move_sub = true +range = 0.0 +warn_type = 0 +sprite_frames = ExtResource("5_6gc3n") +animation_name = "fist_skill04" diff --git a/config/skill_player_weapon/hero01_fist_skill_special01.tres b/config/skill_player_weapon/hero01_fist_skill_special01.tres index b2a9446..dfad47b 100644 --- a/config/skill_player_weapon/hero01_fist_skill_special01.tres +++ b/config/skill_player_weapon/hero01_fist_skill_special01.tres @@ -27,6 +27,7 @@ free_lock = false ignore_push = true is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "fist_skill_special01" diff --git a/config/skill_player_weapon/hero01_long_air_attack03.tres b/config/skill_player_weapon/hero01_long_air_attack03.tres index 5e5ea5a..2fb20ae 100644 --- a/config/skill_player_weapon/hero01_long_air_attack03.tres +++ b/config/skill_player_weapon/hero01_long_air_attack03.tres @@ -27,6 +27,7 @@ free_lock = false ignore_push = false is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "" diff --git a/config/skill_player_weapon/hero01_long_air_skill02.tres b/config/skill_player_weapon/hero01_long_air_skill02.tres index 5bc8753..6ed1295 100644 --- a/config/skill_player_weapon/hero01_long_air_skill02.tres +++ b/config/skill_player_weapon/hero01_long_air_skill02.tres @@ -27,6 +27,7 @@ free_lock = false ignore_push = true is_lock_x = true is_lock_x_move = true +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "long_air_skill02" diff --git a/config/skill_player_weapon/hero01_long_skill01.tres b/config/skill_player_weapon/hero01_long_skill01.tres index 2ec0075..3252347 100644 --- a/config/skill_player_weapon/hero01_long_skill01.tres +++ b/config/skill_player_weapon/hero01_long_skill01.tres @@ -1,7 +1,8 @@ -[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://cwqbhrv8bd5vn"] +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=8 format=3 uid="uid://cwqbhrv8bd5vn"] [ext_resource type="Resource" uid="uid://2bkub7vmxjeu" path="res://config/attack/sharp_mid_hit_blow.tres" id="1_blbi2"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="1_ud5ph"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="1_ud5ph"] +[ext_resource type="Resource" uid="uid://d3mcp8sf6qbmd" path="res://config/attack/sharp_normal_hit.tres" id="1_yey4n"] [ext_resource type="Animation" uid="uid://bjnkrte7660pt" path="res://resource/skill_animation/hero01_long_skill01.tres" id="2_ewts2"] [ext_resource type="Resource" uid="uid://hg1w2k1u3wn" path="res://config/attack_box/circle_large.tres" id="2_fayd5"] [ext_resource type="SpriteFrames" uid="uid://dhfqj1dxldqao" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="3_qwjfl"] @@ -12,25 +13,26 @@ script = ExtResource("1_ud5ph") weapon = ExtResource("4_3bf64") action = "attack_heavy" name = "" +sub_character_count = 0 skill_animation = ExtResource("2_ewts2") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_blbi2") -attack1_box = ExtResource("2_fayd5") -attack1_with_pause_frame = true -attack1_with_stop = true -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 1 stance_to = 2 break_level = 3 is_charging = false +attack1 = ExtResource("1_yey4n") +attack1_box = ExtResource("2_fayd5") +attack1_with_stop = false +attack2 = ExtResource("1_blbi2") +attack2_box = ExtResource("2_fayd5") +attack2_with_stop = true mp_cost = 0 mp_sub_cost = false -warn_type = 0 -with_stop = false +free_lock = false +ignore_push = false is_lock_x = true -refresh_animation = false +is_lock_x_move = false +is_lock_x_move_sub = true +range = 0.0 +warn_type = 0 sprite_frames = ExtResource("3_qwjfl") animation_name = "long_skill01" diff --git a/config/skill_player_weapon/hero01_long_stab02.tres b/config/skill_player_weapon/hero01_long_stab02.tres index 2c4e7fa..3abd099 100644 --- a/config/skill_player_weapon/hero01_long_stab02.tres +++ b/config/skill_player_weapon/hero01_long_stab02.tres @@ -27,6 +27,7 @@ free_lock = false ignore_push = true is_lock_x = true is_lock_x_move = true +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "long_skill_stab02" diff --git a/config/skill_player_weapon/hero01_long_stab03.tres b/config/skill_player_weapon/hero01_long_stab03.tres index fb66e7b..960fdab 100644 --- a/config/skill_player_weapon/hero01_long_stab03.tres +++ b/config/skill_player_weapon/hero01_long_stab03.tres @@ -29,6 +29,7 @@ free_lock = false ignore_push = true is_lock_x = true is_lock_x_move = true +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "long_skill_stab02" diff --git a/config/skill_player_weapon/hero01_short_skill01.tres b/config/skill_player_weapon/hero01_short_skill01.tres index 7195748..7270373 100644 --- a/config/skill_player_weapon/hero01_short_skill01.tres +++ b/config/skill_player_weapon/hero01_short_skill01.tres @@ -23,6 +23,7 @@ free_lock = false ignore_push = false is_lock_x = true is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "short_skill_stab01" diff --git a/config/skill_player_weapon/hero01_short_stab01.tres b/config/skill_player_weapon/hero01_short_stab01.tres index 62f72f1..53a7dbb 100644 --- a/config/skill_player_weapon/hero01_short_stab01.tres +++ b/config/skill_player_weapon/hero01_short_stab01.tres @@ -29,6 +29,7 @@ free_lock = false ignore_push = true is_lock_x = false is_lock_x_move = false +is_lock_x_move_sub = true range = 0.0 warn_type = 0 animation_name = "long_skill_stab01" diff --git a/render/trail_mesh/flare_blunt_slash.tres b/render/trail_mesh/flare_blunt_slash.tres index 241a828..3cd66e3 100644 --- a/render/trail_mesh/flare_blunt_slash.tres +++ b/render/trail_mesh/flare_blunt_slash.tres @@ -1,6 +1,6 @@ [gd_resource type="RibbonTrailMesh" load_steps=4 format=3 uid="uid://c3hyy5yknwsfl"] -[ext_resource type="Shader" path="res://render/shader/trail.gdshader" id="1_oq8oa"] +[ext_resource type="Shader" uid="uid://bey68hqql2gfr" path="res://render/shader/trail.gdshader" id="1_oq8oa"] [ext_resource type="Texture2D" uid="uid://bt32dgn3mag0w" path="res://render/texture/particle/gradient/gradient5.png" id="2_u7sma"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_sawav"] diff --git a/resource/animation/character/hero01_fist_skill01.aseprite b/resource/animation/character/hero01_fist_skill01.aseprite index a341a85134b7a64ce468f7c1f9a45d822ca1cc49..83659ecf2393fc99ef90f9d91f79fb9b656a08bc 100644 GIT binary patch delta 5954 zcmeHKX;f2Z8vc??Ac5R0NQ8P2qTqtcDux{b0l@_UK|n1S!38xq2&gau2|>0%gPNF<;F(CV&YF>*#2N z8&K;A*kSgo2S}>B^y`D|@ zgDYtB*1cpRSP4s+M!0f=jI<6yQ|Em{Bcmm3AZzBt`%;ZJyL!?SvMhjJ1ORdanpjzu z1nkkme>*7|(9p8cIp{f=MCkl9S;ueY-%{>>ZRxa zMoX=2t%QLU8Sl;-OgMPRH^R&-;!mgV*|Yd3pJ^r#hqL?={y`wTF{L&9qPx<_-e(>h zyBw=V0=8(x{Jj<(Y%O8pY!a{{Le*t7z9 z!n2!KN3eN#y4HBc#rJtPe@g~e#dEHVY{ml22A>clcn^$>+Kz&v%I0_!6A!iKRKP$- z5sNG7Xmk8pvu)f@>9OG=fw*#rUgGZxH0vcs0DM zW^7NA{jWWjVrYUz!eKVUD$U3>sab&Us0F2`DDfMBmLl6pz!9k|o)Ee$x08WN5`S0f zyC(d*k_c(p6>44PbUaZIb|gzuP_AE9Rq;Z63|U-wrfARQngL#bXwJlHJrM4|SK*Gog za9g%$+A=Acd#9Ec_xcE?7>0Q|8*2Es3W=^s!xG%x!!dIr*n_lL8LwF2TDI;(C8`9} z5*DhJqX4=B)wV{AQVl$b+=kCO#;8frw(Z{?s6*IHl$Mw5f4pi}-?Mm8lC;90PDX`8RAhAmuE?v5Ae>TlIb(UHvl9Cq9#{b{BreOJKSBrRQC3LC zP88PKg-V8qXP{lo&W2Mz0 z8k({suO+zb%*&c!Ba=EaP&FayQb=2tKQbIgL7WYC!!=`PMA%N61U%|xE=aJ5$5(Df z1J#kbX=-DK3CnF^pze05%F8?Q&&|DB?uUM`Ezt*CrkYXL8qK`6@2X+#?|UqhL{V9H zqWwbcy9z4a@+SFFgEeR^%CZD>ZBA-XGB9^YZto-krk+QDUCaeXC%#O>UC-=YVuzNW zC?`LduImmzEVIr#L5t8I@}@j!*>>{Y&mNt-yh};s0QmI^H6X8xLJ)%@<(OYsgieGC zN+;lke47*U8A`WNgX&=#6kk`6i;QQVi?JQpj!e(`bEh;g$&mY}SbhZm;zF9F z;(?A)pD?H>O6zfJ&=1wfi{a+qpFegh514w`tDaDM<9_dP`OWMUqvXoDWdCyPtQ264 zO1rz}JEU4HMN`HJ@ySg=pEO*MpK@127Qh@a&y&HszhI3-K!hAn*@sD%@<*cEew3Y| z(T(c#ze;Y`QP_Mfx#xa0y2m7Uq>3!)GLd=-7iWuQ?dS{7|54VOel=^AwnRd2WNyfL zX(+@3mY6%A91D|9f{OJnD6pOd(Vyk*1sv4~s;AUptK#y4vK}?C)`z||u8R*ZJE#v% zuc?oZ%%8HLl+8=?Pq%UUH(O446jS^DoW(Zi{<GJb%oE6p-vta*P%MX8#@l^ zM@?J#b9W^9$AeegT4Ra`##*r+XHGORV&QukQM4CI!zZAdR=*=rv3-d@=YMy?J~!DL z_saR!?>j&A;oMW_`1dc1d^^L$s15NdiH`jcF~pwQa!ShG*=K0)LkV83M#PJS;m|Bp zW{PwjjbCF?I^=@RwPf!qei-%-#atXU+{i#raSzEwg9pX!uCR0OA>X7k!AFv|=t=QR zj|Wz%oGrb=OAk*E3hPcx&Fw@&F09I*Rj6@+8#(a3@a3uYB~WQAeZNw_V=u}&n0`^$ zLQ~BVjWrh6xqmyd-&R!Fw^ftTEV&FX@9#Gp43krN^@W=jq@8qRnWVA8jpluXZ>(1h t=!gPXS+)kU1ZLv{DlTc`2#!;9T!ZS*hl)$WxXFyWs9H=^R~~Jq{{=vZ(#Ze- delta 1004 zcmeC(#QgIU6MN-O28IVq!zQv<@*d%2VEFY>i6Mo7fkA0wuQD^cIwJ#vgaXIp?abYb zx|5Sw)S2}dEGGA`s4!bH_)NaWBF|#%%Mc1=OxRq)`Z$n@foZbf^^VC0*0XJnPVv!T zd^g$fWas3!%Q={B7(6HcSRTZk3^bcnfs?_8!G7|e6$#Ad47!sUd1o^I1go5Xk&Ts! z!I;5&a_qEJ?r5l5D+Z^@Q&&d-?KA?ZoqRgAi@O3W$Hd^kU^iKAZ7z2b++4fK*6ZS# z^%?ZR=Dq}(%MJ1os{#{)HP99Hvm+V9C)byWPM$W$li3t%|6{N^h>c7P77QMf1?B~C z2SZJD0J>IWegLx_P_=;E0wy-7KW#zIwP$dcJZC`;V-(oXGYfryhU$ZqF}?vC3UL|} zgB{Qt0gJ;EBj8STVEE4joY-?G1sN1LSPq^oGHU!{%Mke7x%41&X8JPW zch~rq&g8nTxA)1_=Qesw;t$QXgmS&UTDbpjMrA)^L#j#13ZOZx3VaMElMAlRpX|4E z60*UkxGq@AM&WEIo#~b39 zb%BlrrHuc;Kllu zVTfZZ1-jEA)y~wdubLg=7K9j>k>J47+YK2&$L7rm-4AmeV3#270_CoO3?sJW5|^YuWKpY{^jKG2NITD_L}8 z#vjFlS+PJ_-wWTyv`{04W9EBzDOKV z)P{{k+TLt4>`pEC{Mlz{;3BlWd8N1jZ+Sqr@~Sf}+t$6sxB9jOA@@r;9`dM*uZLF{ z{MTO$j>2(}_z6m2oQeJf-$=Uhth9MVLxbSqgLNN2l~;1tW`6qAxP;K^lHXv)0y30Y z@v`)B!owZa*?BV1Q$qsLrK^-~ks#+DOPS1j$r711WSV(lf_TwRM4iyI8HXg7!0SR_r4C-4}YDs6B`wqh1JfoM+N(e>Wg*RB8oHkc201cUi{Uu+=J3RZDpd8~PdU|U3Uv5OK z_;3iSnVEPGk4MKVk@6bQyH`n}nubK1MkUZWQSh}8xV)-~gSqao?mpt7U=`KFDj`r* z&s6#K?Yvtr`wxy*h@vo8#0kJ`CnZ; z&YxB;m&rzsWy1mxrEfJ@K1fdT`(rw*9~-syv>{Q4W~sn%JKvnF9Y2HOp_xF(C~cE3`;Qw>bgfTZI2$P51k)6H1 zuZVRURd*V@ztyOgwS|j0g6y?)taT=$^soUsEb63G6n|Wl$$JjSl;V#HuEUJeD#1rD zQ1?Uh*Uj+wmFz^fqXCfIx<-zdZW12SkirWr$(E;EDf}OS82iDzK@A^4=;@eH`cKP z@8{t8nGOKIL&3nEsW{%Gpyx?n8wb|;@#oNVF)vI8i?<&knw}5!r`RiB>FYJNSm0>3 zp2{pKS&6w_(F;Fux*0;A_i@6iLUZD&g#oFLkIQ|;p_H-3qtPKwKW5&$cZQ4$H!f?z z8fC+twG|UgJ-e4>kw&vva=i53W3YUY!y!zr#1s!>v-*U2k z4t!{OR8sEbJZ%n*McM0UqdE65YDlT&Da3_?i}6}N)CVd#LoF2RxRjwRBQZ){H&S?8 zSbCiHLm{utmHn~HCR*1hFlQRv1{YO=dF##Q$Qx}ZVF2cP@CvJZlnY2i5o7UO+gD>nw` zo9pH9pnSwM1fT5e`}6S1b&Ib)i<`GHn}U_uUOnap=w!FOHG7qs>7OdFJ4Qi74p}-E zooCxs?7HYz}Oj|SCEUhZEkk`SSc;H})cZk3N3yhh_?90MB`ouxmG@eRe^L!nOu zZIZlP%Wq()1}|sy@?-p|Ve|Mn<&Dd#>k)95Nz_Tm7=u1wP5+&t)JeS>T;WPv$${Ut zN!1Il!7Bn)ctHsPc{gJu3NuJUs0Ax5rdtFFPR`884?R_pej5QfAsO#&9^jYP3Dwvs zb57^f5?jFk9tQ6DxNVTVn5NU#1ztIHGn-)?W!47fLiqx{td^H@PK^dw#| zns>c;JK4GEw|If^5eD=_l32?<4(*VwFMZ#%PE-W!ZqHd>*|-=y{K%=Hp|*K#;Nu&L z=aa>8;h0@-(`eLfHCir#uyqkt-69_6gq6{-38k?zQg0yyjI;0BXXwa*;iJPz+e^(M z+}5iF8!z`)+T$Pi;-X39I1VQ~=Hbhq>DmX~=fe;fANsM_5tiCc2^0yqwQ9w6aJ|#bcdUnDCd<-ufJ2B4Rv3~R6c_?l3Y7X@Im(LDo`wr z5ggTSDWCn_2=70V&iLn`z)?h20CxiYq2yz#uWr=ObO@E=Ros<`x*No`?a!ej$6)a{ zm)`0wvdaOg_swwT)5T5rmsz6_HHqn;@f_slj~7w_89GB~DO{Sc} zpZiCK-{djM;EE<556oZO2q+&NcJlI;${d?Xn(h(qd!PepIbfqigi;1rmX;7+ z)#|=oVr6J1hL#Wt(9JrxPyfTyPHJ~9TIzJY16ao-yzMDwh`&Xk1-K7 zlJvi;yr--aE53c=d0uz4>V7dOj&_UV2=~bP9D=nvu+1k%7Snu}zdM*ge!Eef^#b0> zI{XuN%Vuxe-^t5%{rXRI{rAbR527=P3+SXPh)@_-< zN1C7CKs<8ajqZ)p4QBo#Bo6pYhn#x;4Ll>VZ;y$X%6YDzU=(f+!MhN2iHr-_NZM<^u3p}Me`GnSKvSrUZI770(>j7Kn0PTRWIX7mT(UUJiajOo0IFA6*+wrnbxd7S}PEz@BOBjKnKQw z5QF}2{hTWE0KbXl{4S0}uck-5#E4@$^bgJ@=C~M! zEEZiV@89$6E&8*-q1SZyJlHxa)B_ZtVv<8g7sAp%WP_AdXoB~_lc34!k1P+tK@lI? zFQf|o7J`{wjOx|Yv`gvy!@4n3ZD{%%lj#`wZL9E>IxyH^x@C^BLWi&rv}%RQ5MkMo z=;cUef^#?!)lHc831i~e6+Ate-z93(%S?N|__4BJo4He3ymC_ha>M)7C_w7b*?Z5# zuw_G064~al`VsL?3z=NToQm60+*ybjv%V(=Qa+n29+*NY*c_$wvv8+A^9he$Sv3=C zYc%g?C%$#pIiUud0-5A!Q92i*7ONfT{{B<#XBnuXt!U*EZp1Ly3VhGP$m+9c&AtrE zgKMplEAwyf1<$Pqe+nDC+FLWx6FH1yvemJUwfBrGE_OCod)7Q}DJ1hgn*Hp!*IIa= z#5@_d#pLWiez7U6jIL&NMj^pYT9N>Ej)IL>9=W+DZQ2W3dENMSa3KZ-2*FHIM>w z5cZG-CJ&a_aocN;k@agppL)_@s_=92iHxMWNVl)4bmco+al{_0D)36^Tu%Nw+$ZcP zy+5J(A4BS+f!S+}tR=^mrZ)MQ+xA*i2~HkmZVKBfC!y!O12hL9DZ_w?t`0P4yI8mF z?KiPpDH)4{unycUUaI6jJJVa?GqI134K9y3i_{-N(mFZ6E~{kjvo1MWL>5?Eb1xGk z-1ac=8BViGdlcP3e4I3PvMNHQykc2DYNmTa^8p(tyMG|;;W7FT(|i)i$$JO0<6o

fgoQd+uK|~ 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 A1poj5 literal 20570 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 diff --git a/resource/animation/character/hero01_long_skill01.aseprite b/resource/animation/character/hero01_long_skill01.aseprite index 39447095f4d9b9de2db585cf68c884340620ef31..0e26f8295707ad2a9586fae27677e945688c3782 100644 GIT binary patch delta 194 zcmdmYiSfo6M)rs_28IVqjW)9HW@hA?%*Z0mV#v)P2xb@wF-QR!GR)Ep>XQ{%6qq#_ z41u)#<|LM#tW39=CO_0s+x(YnGZQ28-pH%I`M4wxGh^UnZ`;nv ndU_d~l;fEgQ$ak08dWA%25ibuHKFjB-h-_KnYg(@Yo8qe%{w}B delta 1713 zcmca{hH>8|Ms~YQ28IVq4L7pyW@hA^%*Z0mV#viH0A?5oGDrd$GR#s8YLgXM6qwZ+ z41l!!<|LM#tc+79|KeBY-o?Pcz^cH=pvRyySt@eUvv-O&*8u|#m%aZrZM_z%KFSx$b&BcS*Vo)8wD5s>LbSs4H;vmmJ?}Rz zay8Ii{-kijo9ApNwja37eSN*&K8Fh~3jG0 zymimy$hv3#+L~eq>U_dJ3x6qlKI?UT689AAwNJi8`ZrDzd-ANy^+FuWef2Bl2iPB% zC|uYq$9tQJmx+ae;nznFh7_PfIVKlc)z;4ivOvBwWUxT;fY&aa@*GLo8q|j*NL8p6a;JiI*bp^)9j858_JpRlWnIeoU`!W=9F-- zGx->T8C;N(fii%&^)+fTtO8+BBvXD!EMqCJX*#;`1S7-MgZ6zc;PBuChX*G(y$$~GSSWj(DIpjd9>8(|DLkaW z;j#DpMqUO59_E8NKY!;pd9ZKP)!KK)l+WSi3novNeti=`8#e3ncU1mo8ErZn#QG~* k>JU@vU4?}onbGs!&-XG93 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⪙+x+z~*<5YQR43pc#8Ok*>i5vx5J6uX5BVv< zmr4r;isFoSVi(Oy&tV>R)U5XSiUDgl%3a&sWGE)>E7xUb{c8=16wi>9=rHd(6de@9 zd5Z14pJX~L{|gk*^_G*y<>7^;qtMv0V3c@Kqja5$Emna*Tc=ECfFVoKi&qlXS~F67 zl^F*cZ(-=E;CUCaKe@a?WB+z~eRT&&D$~wxmlVm(VPT7R$_LaL>?7C6HgG&K3gQX$ zaPbdYugp%8=Wv2xkIg0^nSf#?Z#BS>Zj&+-KJKtL59_Y{$j#AU?X zSZr3UIo;mhK*zQ9(t9UZ(Gf%R#adJGqPk3NYSymOKm* zyyx+RT`sWkWv=UM%f{3{wjLQh>Dat$$ob&O@o%W|_DVbvKW3v(k!r}Sr>T$F9aD|e~;#V|ib>zAG z7NVD32}7@Oaul8gMJ6=B>0(1j^GPdNj8_Pm_A=>lAC%k1!>bo1g;Xcu`;24iaf+Sx+U_bv>^qZF&HsaFB*_Y+^>-6eKXgY}xV(vhDf_l#m8Hka8g@ewhQ=kA<* z&v4Ev#k&48TaMh9Kum0cAO>*oPg-dHCV{jGIatHyyPKwk#AM3v8U|CqxmaCsPEeZ) znUEoPw!HxY@f23ZHIXbWnEk1sDV6you9H68`uKkP-*y+=!ZZ~^bPJak~YEW9;jEdBfa^ zslq&K>l|@RgDbU^09&q{3<&z&u71{25Gg__%p&D9+}j?w-S@Z$P6!D)=Jks1o9VLH zH>Zo<)O*e@N)*O|w$xg!EGcI&<6%%rDYB(H6KQ3vTAvWNR7D) zO|E)T#L-WXBOP^rq7%Z$5Az_zm;%<`=L%PPkd^qH-ENafPeYccN)@nq7b(-(Gx)*!dJ3z2B1U{!};0N`_k}~`&n5k z1+L$HBL;z0N6SS}?+j-I68lON;7EUXTj6vPl>^LvmHIC}%mQa2r0z6jz9iy-W@NDe z(<}k+hEy|ZXrgudU$W-2;+N(D03-`PdK`^zaIA^3iFcCA25=9btAi|yOUso=B#b>M5yum9+q{U@1ok#E^p_H zV}Sw%3JKF8n_i>o1R&Wv#skURckY@ISmUl!oj*UZvhH;G-%R)bavibAzU@vJDH3V< zkuoxka^l-pReXwhhd8ESZcZtULr{6~IN+TFcEqvbG^i>70GH3Ln4etC7_8Kkh>H^sel73TMuu$C=->cb(EcQ48K zcyHif*fc10BJl@RI5U4$0<1Glh;v#k6Fu2!&pwHn0alcuJtZFU+b}@Pf(Y^uC<)+K zyw#$M|HQIe*&!Q8&%6`b?KfhUR{F*~jt`3^m(=vmRJw^dbBvBfzrI6d&_55w7?Yf+ zY*BbkkiY6PvA3qW^?cHnV`g_){I14mRml)Fuf+#Ue*Up<$vFvvf6@|RspDy9OA3t0 zKiuoh`cr^0<=<%^m=RO)*ygB@j`JrNpvQR*ySXnjOrz~s1HYzV&|Ge0v*GnEF5Bwz ze>!X^Ra27*BCE>&4Uj>~(@I+;q+D7_ci_KQ{Yv4cGty*CHK;g$tGt<<0t%YkEbgafJA;c>4x~v z&$~?yqQHLIp7AWo1kOzAO(rL6Ck1y0*qrxAahPxS{9~K+0}R+!YHcxy<6bc-#lSk; z%F`1buy$B00CO4IR1&%}{RLEG=e2NAC4zMfSSHvbB!i~(G+c%-anBx+xSja z14L0BUap{Ce%xKN3Bc4T`E8r&PGrb`k?%zZ1o&UIL9ZwxZb(Ug?O%(6*vintnAy2m zv00w|(`<+yr>eo(VUP(*Q?XCJfIB_NY!YFCp8Q;i47|DW_GlAlD@1`3Q6$&t@S&gA zPXKFM1x113xiZZzO_5tHdUF!O#c%N`#YEq(3frT_)S{=_vuUz*n39uzlDQ}qGTN!- zGx^rmJMy@9Jb(cH%Up5Y<;Zddow|UqJnF7AKIo84yJ-`tMh{xBdGD%%lmNX6v=|}) zZxWOpmcH3}YsF6+Rj}rh9_^tgbPcWv$+_J+-}iGYQyWaFr@M!5?3NX=$Y%n3Ny8fvHKa=W~YP zcoTR1>jUXdD4V7pT|zl>_Z|!>z$`>Bi|uc|%Cj>Ty7!~_^asE%KWhCx7a7*~i6IN7 zDudxRolBU51ku^d3FQfBs5JmRh&uY(4>@BJk6QNePY7-O%W_xb%#qfkW{EjD)|sn8 zIrz@Gm;0r~cFsg5`KWbsnBf_O5kdRhwcb#yi6(Dj$XT9|n}sS#aJKBiAY9q0 zBWHRyf=b56N2!~)f23)A5LesWqQJc_sXzUFt+K)Y%a1gYsJ3RO0zaxBmdYRyp3Qp} z;ByK0*>A*>OtW-^(V~B)lm+jQb7D$!H$!3c<1ee9wW)OcraS!hh9kh~&?Ci2#Va^S zzc1g{AT?+IV*!7{3Dimtju5Qpx^*xFd7$DI_2zB0iUP| z6taMIwP9Z?$oztC%n)FQf7Uvc6>f0>A{ANWy(Zvs{5@1dS*B|LcQxh=d&X+|N44IZ z(KB!*zj)6_zb5gdM76RlQM$YaY#TOZWmfu-@l^wy;l|$c{rr$b@6Cow75jK+hIpXi zlj&*QvIyAly;n=O8P67F!_|2RTOSm_a7bv%e-tYdq0F^=IS5w*f58sFYf8+`QfxJq zky2IWU9pscLw#|?ZPb$)ibEy4b0zR5`C7i^7!hOZ9jfF?_G(~y{m>0h_ zInn~!=6@FfJ!YYre9a59QNkF=73z%g)_Hf`IKA1d-mz*bR;HpQX*|yNo5TBUKHC(p z$XYRtDn3<98+(Tu_#BKUpHtgc;Tn#`yKu2;{2`_p}-VJ>`{gmtQo9YYnn5 zke461#KC+}myK;sr$us7GnXcR9l2___>GT#bRx^#!a+`fOgSb~8){-l2AzSo7p57}jzFHJyY#s~H!CG&v+j;qln7&w=B(Hk@*NM%xeGQf!2=WNV%Ezl zgg4!5?YP-Ko(IL_R&``CoKwmr6|^bEH?c8|I?jsiF8O|9=|gaP`GK+kTsl zY!@0%aJ?HqMkW9da=O11;T`(|00p+L8-hpwI|ud~UvVH{(>9^}BD8>{dt_8x{IVXWLKWx)>ZmjN@$m}DoSRe@kitCIV&)N*$7vG3a+z6R} zIrLcAs1rfd^2dMNrNcpG{@KhCL}G8mu4AXsecz@34QlTD2hdu~| zT@F##LtkR~t)9NYe{#0$OZ+PZbVp|pDvD~+W?+(JYX`|1s@TS`qV#yTE4-$(d6>+}b_4rpip~7Bm4o2yWIUH8OYw|x! zR+YZ5R}#;hUk5EJ(c-o-dMJ2}`gyRq1^-U0;h~|6}V77^@j7xXQ_w2~M z`2{R-CH+?QOpQ`x0u|k)q4nH^7^IQblC1Ef%R6WVnVGEuu{dnqrNyjPWUcD-p<5l5r^+k#i ztOJ&z^nt=fj;GFf4>vWfOaK5z1>XgK=2hYE+A7Jrj5WX)jpCd!XuDvt6=)>MYaoDa z)a$E0XM_O(?m6ISP4LhCE;DXRrF2BjzSYjl^DH3A;2ua2xr$4X3d7{mgI%G{ z%gXyYhh;$Bz@PR5U+T6N{W7Q+YNVIbs*GFu8$hff9aI14&R^Y=wewTEw%=MsFoEkU zV721)-Kb*e%J`tX1M~sw03wZ~6<*20QZB>a{>s0(l!KhhG(U(_Z0bKssM^t$W@>qQ zd?(Iv5D^CgvF>Z+?waXF;Vtw?T^kC0=Fzo9(+pHh^Jm}ae;&`R zbLoTgE8|n4vGJwVJav{>b+@Bgiwkt-;}xIlb6oSY=a%fF%^(L^U1}#+=Dq_YL-e_+ zN*CpZu=Yw>+Sn{ha0M0U7hQIa=RF8(mlsV|J5tV)`|Re{aow2y9Wgu;Ixm$0;Lz5h zR+I8Sl>uM0xMt{T^K>7XW&Vou@X)vD$e2Mb$q)Te2fYsURv0Bcqo2q2bAH~(#+}PGXy2Nz6TvDP*MPy zC2fWhg1)Iw#eSEU{Oo_WfdI_Fpq1?|cVtc;c^%yX1>GEl?GUGfV;PIE_gvaI$j$NNtaSrJdmgsPYpLpg^(@Xel7fAoJ|{@? zxLTTv@5*;UeKkufb^HUHxTaSzl2 zuJ#LX7Z%lH(u#Ty=D1dq1rbRzz2O!O@X{aGk+Qx>qmVDL!uj52%yE+m3;^h zP|r^qWL7}G421&KuJ7mn&>v8)=}|=LOU#MQ7u)z+JzsU|5Q(8a-MX&MLWN9c)e_qd z@d)!F4Hh6e_T7o(jk>U6R-y>g=G)}-Cj-G2q3rOS=c&L{-vPlk?Duev=T4g476pt- z`0cUvkz;!+;=Wg<#M=m8vTgTdC)uHWJEyg*1{5 zDS8I|1ces>qDCT&pufXZP+bu106pmUDGvh_?llCS^X&rGE)*{K^xeV5Piqg?Ol2~- z?v!``5heH?Q>J5=udRhXx4p~E9E300Bkj-0agxBO_+)?J@MQllsdzb(Hh7kqu56m9 zs`*BdkAAIMP>%)9!FDwqK(Y{0oC4a)LaxqYBao1=dJ3UpB|e^NN@HRD_0x0-#W-VE zNq^$ly@4D}MBR^}E|z^*24WtDy;d#*{g5;l`pLy=q=2iu!h2u5-?1fUnPzBzSIblN zAzlg3r}_2pGi?2yRlcB6cMJ!DLTkN&`qjYb*(W`*->lyFBhOcm|fGeJV#oXgmk*BBdUh0WVY{7tof4jO33sef?@?+na?VH z@j*(}%y$rflibDzWgqeA1|iLsYGm1O54>LtYmQX1DU;q>q5HLa!F7Xd0=R=mb&=uZTzYK$m!m+acs+ZvsF(e!jjR-^a#$HAVpaz02#pxQaqR zyQ*kAm)Km|P{S$FhvrW7QwPLa={8@x)&qlj{T%_WN`#f!;0@^S_x4NLZ~myk|CD3~ z$mSMyR!;X#%Q+Zr)c&Au9{q}Bk3BRWU=+f50NURYxY2_|B!t~SLM6iGAd^NMufRKM zLGDXVt|d&96ytwI7QeRmwDb-kOYsC0-of@0N@vI2KM}w%t15!> zlM6{;bIJe&UhygENasxF!HKqebO!@To{hc95B}tv;iV1`y6JyY(DFJdh{D(I_5h+= z^0)71k_Gbv2-r|*cD`1bMe{5f9POVVDdWDD=~#U{O|AX%-T@eYMg+ZM6v%1Bnmm6m z%&`|tY_|gECf4n4I`?z!1eEVLyoxvAra!SQ?kX9EbU)DKcUi>y4Zuj2>`9&wpxIg_YpaeSQ`zPOduQuh+7AGSa_O%b;J9PQV@Iml1x`Etf&6-}uA6^i^WNPD z&2qdVey@b5V^Du0boXzf=ABt4Z#Y_S^9qs>q1`&QfaXVsf!&gU`k^hGBvuHqz3Vg} zHC3LvO87ppOe4Mf17G%>0(WC?j}nEz*vMRujam1T1e_Ga12DZ!#9Y^Y z@#&*SV~r&Y(o=}n0Wp>kMsk_twaKpbk_QIH^^g8_d+sJ@l5kt0PW^$za%`~p4jVx8 zUStBF3V1Fc7G0?-m+6Dmf>VcHtCVrPwR$6Tly;#(rgmK&V|30r9I>jsEG3xjZ`HjZ z8iA*srcdJUVPI-!nf5k+;ZDQ=CG8(a(vmV-6%3J)w)_+`n~NufPyr_ZI}*J>-L6@N z8AOiNAfsiCK>L7C zt1Lz=$#-%8tA*G-b3`KrK$D!o=AM84pz^V3Wxj2MmJHF!YE&_Ej9vOQb@j5Dv zB`(x{sTGV;zqA|5#d3&;G2rIlE7m}uhtdm&U%0SGMN=|qo#iEs!E;(vX+LEpr29RI z$IKT-4M-;}Y4DR(1nY+#fG(l3Fg23f+OPHlfjbV~AHYKiGZM7lgDS<-703^<{%0N`fiypr%3b~qzitNd!vF-=J#%kZqr7X$VSlb#&UXe!@% zHBAIHag{9mm{lLpFk(^z??q_kecbP`13+Itq+nx57$;RAk;E;y6(Q1;D^uk0dQj z&}P6MY_D|v0S`iIoXce?wDu63^}vB+-m$_v|>|iS1+Jod*7QwfJw-D5%7%_ zNHqgOkDg;};z0x*@n>3M$iVO6L-@So@_#d{%>8r;0gwso=`xw=dZlR{Ak?aFC`kK) zHdeMbtGmkK9$OC|s&o_G|4NNfcVRe49|F$?Md+y0gxmRUC`F~*x!)SC4t7C+T;-w% zQ~2I&^4S9jyLw`ZU)=!??7vD>c)JvIafO6xatZ!gDUg?yIa!O}+FMDq z@Ayw*S+^iOJDEhW1bS~ZH;r4W?x?`pw|V{2s$>g@clS}e@olgwYJ3=EDyQcEV(sQ_ zrR}YwQ{Yr5!ou!IJLCZHP?nG1Z)D8gA6J_9j=rWE+5S)e-_Xk~@fa5>)D&)r+L-fG zlmVI&`6;8y$DaYiA7|e5@vo0p)vC}`JMa%c7<gfdHB_MqrC*Z!5kTgz05+b(+FS`nbYEE}K;F3AB-IV|w()j>s?q zc{p`y(5C_`yZF-M{o)qyLzC*7d|RFdJkE^(AaZ^$N&)G^;>6_*{gSR|6NwcDTNJus zhdy__-(WOyi|A2eLb4qdpTIsGl9b3)Fr#I)j8uZ(;$1injg?!@CjEFC;@?eE@8&_`e4@PV_U#%>nLia5(FVhd9+o(W9WYduk*s^6? h;+(k%6%zjWbHyZr+pspJfaeiG(&7qYl_Ew#{|_GYiNgQ@ literal 16897 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 diff --git a/resource/mesh_library/mesh_library_main.tres b/resource/mesh_library/mesh_library_main.tres index d9123cb..dcf4180 100644 --- a/resource/mesh_library/mesh_library_main.tres +++ b/resource/mesh_library/mesh_library_main.tres @@ -1,7 +1,7 @@ [gd_resource type="MeshLibrary" load_steps=30 format=3 uid="uid://bmyo1828sbetg"] [ext_resource type="ArrayMesh" path="res://.godot/imported/main_cave_full.vox-d3ff94dc223d1a52d1f31079c8e2a62a.mesh" id="1_tdu4k"] -[ext_resource type="Shape3D" uid="uid://od6oviel3ny2" path="res://resource/mesh_library/default_shape_large_full.tres" id="2_r143j"] +[ext_resource type="Shape3D" uid="uid://ch7a55vopmlvc" path="res://resource/mesh_library/default_shape_large_full.tres" id="2_r143j"] [ext_resource type="ArrayMesh" path="res://.godot/imported/main_graybox_full.vox-a58be67573bdd21889eb5ca069ec437f.mesh" id="3_lru8n"] [ext_resource type="Shape3D" uid="uid://bu7jdmo4po5n7" path="res://resource/mesh_library/default_shape_large_stair1.tres" id="4_0ehrt"] [ext_resource type="ArrayMesh" path="res://.godot/imported/main_graybox_half.vox-7ddcfdc027de1ffda730ae0a6b0e66c7.mesh" id="4_2i7gw"] diff --git a/resource/skill_animation/hero01_fist_air_attack01.tres b/resource/skill_animation/hero01_fist_air_attack01.tres index 6cd135e..533a5ad 100644 --- a/resource/skill_animation/hero01_fist_air_attack01.tres +++ b/resource/skill_animation/hero01_fist_air_attack01.tres @@ -5,6 +5,7 @@ [resource] resource_name = "hero01_fist_air_attack01" length = 0.9 +step = 0.1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -98,7 +99,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.1), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], diff --git a/resource/skill_animation/hero01_fist_air_attack02.tres b/resource/skill_animation/hero01_fist_air_attack02.tres index 745de68..b5fe672 100644 --- a/resource/skill_animation/hero01_fist_air_attack02.tres +++ b/resource/skill_animation/hero01_fist_air_attack02.tres @@ -5,6 +5,7 @@ [resource] resource_name = "hero01_fist_air_attack02" length = 0.7 +step = 0.1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -98,7 +99,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.1), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], diff --git a/resource/skill_animation/hero01_fist_air_skill03.tres b/resource/skill_animation/hero01_fist_air_skill03.tres index cad5973..b17b456 100644 --- a/resource/skill_animation/hero01_fist_air_skill03.tres +++ b/resource/skill_animation/hero01_fist_air_skill03.tres @@ -87,17 +87,23 @@ tracks/5/path = NodePath("Effect") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.0999999, 0.4, 0.9), -"transitions": PackedFloat32Array(1, 1, 1), +"times": PackedFloat32Array(0.2, 0.3, 0.5, 0.6, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), "values": [{ "args": [], "method": &"cast_attack_particle1" }, { "args": [], +"method": &"cast_attack_particle2" +}, { +"args": [], "method": &"cast_attack_particle1" }, { "args": [], "method": &"cast_attack_particle2" +}, { +"args": [], +"method": &"cast_attack_particle3" }] } tracks/6/type = "value" diff --git a/resource/skill_animation/hero01_fist_air_skill04.tres b/resource/skill_animation/hero01_fist_air_skill04.tres index 8cd2573..866b83b 100644 --- a/resource/skill_animation/hero01_fist_air_skill04.tres +++ b/resource/skill_animation/hero01_fist_air_skill04.tres @@ -99,7 +99,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.1), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], diff --git a/resource/skill_animation/hero01_fist_skill01.tres b/resource/skill_animation/hero01_fist_skill01.tres index 49e87b6..46985ad 100644 --- a/resource/skill_animation/hero01_fist_skill01.tres +++ b/resource/skill_animation/hero01_fist_skill01.tres @@ -5,6 +5,7 @@ [resource] resource_name = "hero01_fist_skill01" length = 0.8 +step = 0.1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -86,7 +87,7 @@ tracks/6/path = NodePath("Effect") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.1), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], diff --git a/resource/skill_animation/hero01_fist_skill01_add.tres b/resource/skill_animation/hero01_fist_skill01_add.tres index 3dbc0f7..421c111 100644 --- a/resource/skill_animation/hero01_fist_skill01_add.tres +++ b/resource/skill_animation/hero01_fist_skill01_add.tres @@ -124,12 +124,9 @@ tracks/10/path = NodePath("Effect") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { -"times": PackedFloat32Array(0.3), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"cast_attack_particle1" -}] +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"values": [] } tracks/11/type = "value" tracks/11/imported = false diff --git a/resource/skill_animation/hero01_fist_skill04.tres b/resource/skill_animation/hero01_fist_skill04.tres new file mode 100644 index 0000000..144e54c --- /dev/null +++ b/resource/skill_animation/hero01_fist_skill04.tres @@ -0,0 +1,114 @@ +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://dh1d2vg2hd1lr"] + +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="1_yu44b"] + +[resource] +resource_name = "hero01_fist_skill04" +length = 0.9 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("View:sprite_frames") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("1_yu44b")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("View:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": ["fist_skill04"] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("View:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Status:break_level") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.3, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0, 3, 4] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Status:skill_move_speed") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.1, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [4.0, 0.0] +} +tracks/5/type = "method" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Battle") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.2, 0.3), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"attack1" +}, { +"args": [], +"method": &"attack1" +}] +} +tracks/6/type = "method" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Effect") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0.2, 0.3), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}, { +"args": [], +"method": &"cast_attack_particle1" +}] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Status:skill_float_speed") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.1, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [4.0, 0.0] +} diff --git a/resource/skill_animation/hero01_long_skill01.tres b/resource/skill_animation/hero01_long_skill01.tres index 200b098..71efb57 100644 --- a/resource/skill_animation/hero01_long_skill01.tres +++ b/resource/skill_animation/hero01_long_skill01.tres @@ -4,7 +4,6 @@ [resource] resource_name = "hero01_long_skill01" -length = 0.9 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -37,7 +36,7 @@ tracks/2/path = NodePath("Status:break_level") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0, 0.5, 0.7), +"times": PackedFloat32Array(0, 0.4, 0.8), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0, 3, 4] @@ -49,7 +48,7 @@ tracks/3/path = NodePath("Status:speed_up_rate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.1, 0.2), +"times": PackedFloat32Array(0, 0.1), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [-0.5, -1.0] @@ -61,10 +60,10 @@ tracks/4/path = NodePath("Status:skill_move_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.1, 0.4), +"times": PackedFloat32Array(0.1, 0.5), "transitions": PackedFloat32Array(1, 1), "update": 1, -"values": [8.0, 0.0] +"values": [5.0, 0.0] } tracks/5/type = "method" tracks/5/imported = false @@ -73,11 +72,17 @@ tracks/5/path = NodePath("Battle") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.4), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0.2, 0.3, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), "values": [{ "args": [], "method": &"attack1" +}, { +"args": [], +"method": &"attack1" +}, { +"args": [], +"method": &"attack2" }] } tracks/6/type = "method" @@ -87,34 +92,37 @@ tracks/6/path = NodePath("Effect") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.4), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0.2, 0.5), +"transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"cast_attack_particle1" +}, { +"args": [], +"method": &"cast_attack_particle2" }] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true -tracks/7/path = NodePath("View:frame") +tracks/7/path = NodePath("Status:is_speed_y_freeze") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [true] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true -tracks/8/path = NodePath("Status:is_speed_y_freeze") +tracks/8/path = NodePath("View:frame") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { -"times": PackedFloat32Array(0, 0.4), -"transitions": PackedFloat32Array(1, 1), +"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": [true, false] +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] } diff --git a/resource/skill_animation_library/animation_library.tres b/resource/skill_animation_library/animation_library.tres index 18bdb06..0d2fa3e 100644 --- a/resource/skill_animation_library/animation_library.tres +++ b/resource/skill_animation_library/animation_library.tres @@ -1,4 +1,4 @@ -[gd_resource type="AnimationLibrary" load_steps=61 format=3 uid="uid://croik07a1qko5"] +[gd_resource type="AnimationLibrary" load_steps=62 format=3 uid="uid://croik07a1qko5"] [ext_resource type="Animation" uid="uid://t01a4jvp8srr" path="res://resource/skill_animation/hero01_fist_attack01.tres" id="1_4bwwm"] [ext_resource type="Animation" uid="uid://cfapnjkj5dkws" path="res://resource/skill_animation/hero01_basic_flash.tres" id="1_46f01"] @@ -47,6 +47,7 @@ [ext_resource type="Animation" uid="uid://by0w3sn21f1v0" path="res://resource/skill_animation/hero01_fist_skill01.tres" id="24_qdhvi"] [ext_resource type="Animation" uid="uid://bnqll5kf8t8qs" path="res://resource/skill_animation/hero01_fist_skill01_add.tres" id="25_j3bpt"] [ext_resource type="Animation" uid="uid://mnmlwnqk4aqq" path="res://resource/skill_animation/hero01_fist_skill02.tres" id="28_p1ciy"] +[ext_resource type="Animation" uid="uid://dh1d2vg2hd1lr" path="res://resource/skill_animation/hero01_fist_skill04.tres" id="30_ptcx6"] [ext_resource type="Animation" uid="uid://b73xq7qwltbo2" path="res://resource/skill_animation/hero01_fist_skill_special01.tres" id="32_43goe"] [ext_resource type="Animation" uid="uid://h8hm3kbecdx8" path="res://resource/skill_animation/hero01_remote01.tres" id="33_7i37k"] [ext_resource type="Animation" uid="uid://q7qlw0a7hfjt" path="res://resource/skill_animation/hero01_slash01.tres" id="38_lyels"] @@ -92,6 +93,7 @@ _data = { &"hero01_fist_skill01_add": ExtResource("25_j3bpt"), &"hero01_fist_skill02": ExtResource("28_p1ciy"), &"hero01_fist_skill03": ExtResource("23_541fl"), +&"hero01_fist_skill04": ExtResource("30_ptcx6"), &"hero01_fist_skill_charging": ExtResource("1_nd54y"), &"hero01_fist_skill_charging01": ExtResource("23_12bpf"), &"hero01_fist_skill_charging02": ExtResource("24_j0oqq"), diff --git a/scene/character/character.tscn b/scene/character/character.tscn index a50cf30..8bfb6a6 100644 --- a/scene/character/character.tscn +++ b/scene/character/character.tscn @@ -1,10 +1,10 @@ -[gd_scene load_steps=25 format=3 uid="uid://8rcvw1vnjcf7"] +[gd_scene load_steps=26 format=3 uid="uid://8rcvw1vnjcf7"] [ext_resource type="Script" uid="uid://cdvtgxvof33j3" path="res://script/character/character.gd" id="1_tonbs"] [ext_resource type="Script" uid="uid://cms637d0jt6sk" path="res://script/character/hitbox.gd" id="2_6xf87"] [ext_resource type="Script" uid="uid://bfi4gneebe3oq" path="res://script/character/status.gd" id="2_txdip"] [ext_resource type="Script" uid="uid://cnaqs44siwa45" path="res://script/character/move.gd" id="4_66r53"] -[ext_resource type="SpriteFrames" uid="uid://jpxh0jr8wp8g" path="res://resource/animation/character/hero01_basic.aseprite" id="4_sox5o"] +[ext_resource type="SpriteFrames" uid="uid://dhfqj1dxldqao" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="4_sox5o"] [ext_resource type="Script" uid="uid://c247mf44qb3uf" path="res://script/character/view.gd" id="4_vijjv"] [ext_resource type="Script" uid="uid://c24is3uqqcmcn" path="res://script/character/skill.gd" id="6_h4xqy"] [ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="6_pakq5"] @@ -18,6 +18,7 @@ [ext_resource type="Script" uid="uid://b573l3rqq52j7" path="res://script/character/throw.gd" id="16_ot265"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_l0gkv"] +margin = 0.01 height = 1.0 [sub_resource type="Curve" id="Curve_v7nnw"] @@ -32,6 +33,13 @@ radius = 1.0 _data = [Vector2(0, 0), 0.0, 0.0, 0, 1, Vector2(0.62982, 0), 0.0, 0.0, 0, 0, Vector2(1, 0.762586), 2.06004, 0.0, 1, 0] point_count = 3 +[sub_resource type="Curve" id="Curve_sox5o"] +_limits = [0.0, 2.0, -1.0, 1.0] +_data = [Vector2(-1, 0), 0.0, 0.4, 0, 1, Vector2(-0.5, 0.2), 0.852417, 0.852417, 0, 0, Vector2(1.49012e-08, 1), 0.505867, 0.505867, 0, 0, Vector2(1, 2), 1.50002, 0.0, 1, 0] +point_count = 4 +metadata/_snap_enabled = true +metadata/_snap_count = 20 + [sub_resource type="Animation" id="Animation_dbjx6"] length = 0.001 tracks/0/type = "value" @@ -137,13 +145,14 @@ gi_mode = 0 pixel_size = 0.02 alpha_cut = 1 sprite_frames = ExtResource("4_sox5o") -animation = &"basic_air_flash" +animation = &"long_skill01" script = ExtResource("4_vijjv") [node name="Move" type="Node3D" parent="."] unique_name_in_owner = true script = ExtResource("4_66r53") after_image_speed_curve = SubResource("Curve_1lu0a") +speed_curve = SubResource("Curve_sox5o") [node name="Skill" type="AnimationPlayer" parent="."] unique_name_in_owner = true @@ -186,7 +195,7 @@ script = ExtResource("14_gua01") [node name="Throw" type="AnimatedSprite3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, 0, 0, 1, -1.50996e-07, 0, 1.50996e-07, 1, 0.75, 0.4, 0) +transform = Transform3D(-1, 0, 0, 0, -1, 1.50996e-07, 0, -1.50996e-07, -1, 0.75, 0.4, 0) visible = false pixel_size = 0.02 sprite_frames = ExtResource("15_70jx1") diff --git a/scene/effect/particle/_particle_dash1.tscn b/scene/effect/particle/_particle_dash1.tscn index 9fc28a0..c1e1333 100644 --- a/scene/effect/particle/_particle_dash1.tscn +++ b/scene/effect/particle/_particle_dash1.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=13 format=3 uid="uid://cxopc3y11lwg1"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_2qqsc"] -[ext_resource type="Shader" path="res://render/shader/effect_dash.gdshader" id="2_b7c5p"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_2qqsc"] +[ext_resource type="Shader" uid="uid://cv5aoog7et2oy" path="res://render/shader/effect_dash.gdshader" id="2_b7c5p"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="3_srlkl"] [ext_resource type="Texture2D" uid="uid://vy3c8opc6uju" path="res://render/texture/particle/mask/mask17.png" id="4_1upic"] [ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/particle/noise/noise2.png" id="5_yrr1g"] diff --git a/scene/effect/particle/_particle_fist2.tscn b/scene/effect/particle/_particle_fist2.tscn index e143727..622018f 100644 --- a/scene/effect/particle/_particle_fist2.tscn +++ b/scene/effect/particle/_particle_fist2.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=28 format=3 uid="uid://cjgt2myahbtci"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_uf2ls"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="2_eqart"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_uf2ls"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_eqart"] [ext_resource type="Texture2D" uid="uid://dg6i5l05y3vww" path="res://render/texture/particle/gradient/gradient2.png" id="3_wii60"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="4_8g8a4"] [ext_resource type="Texture2D" uid="uid://n5eob6sceoxj" path="res://render/texture/particle/mask/mask8.png" id="5_lbv4e"] @@ -35,7 +35,7 @@ metadata/_snap_enabled = true curve = SubResource("Curve_4ikwb") [sub_resource type="Curve" id="Curve_ru6ll"] -max_value = 5.0 +_limits = [0.0, 5.0, 0.0, 1.0] _data = [Vector2(0, 5), 0.0, 0.0, 0, 0, Vector2(0.1, 2.5), -8.34728, -8.34728, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] point_count = 3 metadata/_snap_enabled = true @@ -44,7 +44,7 @@ metadata/_snap_enabled = true curve = SubResource("Curve_ru6ll") [sub_resource type="Curve" id="Curve_s1p8b"] -max_value = 1.1 +_limits = [0.0, 1.1, 0.0, 1.0] _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1.1), 0.0, 0.0, 0, 0] point_count = 2 @@ -91,7 +91,7 @@ metadata/_snap_enabled = true curve = SubResource("Curve_7np7a") [sub_resource type="Curve" id="Curve_x385q"] -max_value = 1.1 +_limits = [0.0, 1.1, 0.0, 1.0] _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1.1), 0.0, 0.0, 0, 0] point_count = 2 diff --git a/scene/effect/particle/_particle_hit_ground_heavy.tscn b/scene/effect/particle/_particle_hit_ground_heavy.tscn index 3551d63..ba09184 100644 --- a/scene/effect/particle/_particle_hit_ground_heavy.tscn +++ b/scene/effect/particle/_particle_hit_ground_heavy.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=14 format=3 uid="uid://5d1a3s6x77wd"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_2t2j1"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_2t2j1"] [ext_resource type="Texture2D" uid="uid://bjv7f83tdgq17" path="res://render/texture/decal/decal_explode.png" id="2_vkpca"] -[ext_resource type="Script" path="res://script/effect/particle_decal.gd" id="3_dwi0o"] -[ext_resource type="Shader" path="res://render/shader/particle_ground.gdshader" id="4_ppovm"] +[ext_resource type="Script" uid="uid://m2tgb0yymupx" path="res://script/effect/particle_decal.gd" id="3_dwi0o"] +[ext_resource type="Shader" uid="uid://wbnso7r87cpj" path="res://render/shader/particle_ground.gdshader" id="4_ppovm"] [ext_resource type="Texture2D" uid="uid://cvm7ouwqnp235" path="res://render/texture/particle/shape/circle4.png" id="5_ckrbk"] [sub_resource type="Curve" id="Curve_w5jkx"] -max_value = 0.6 +_limits = [0.0, 0.6, 0.0, 1.0] _data = [Vector2(0, 0), 0.0, 0.84, 0, 0, Vector2(0.0196078, 0.6), 0.0, 0.0, 0, 0, Vector2(1, 0.6), 0.0, 0.0, 0, 0] point_count = 3 @@ -24,7 +24,7 @@ point_count = 2 curve = SubResource("Curve_yx8ux") [sub_resource type="Curve" id="Curve_o1uxt"] -max_value = 2.0 +_limits = [0.0, 2.0, 0.0, 1.0] _data = [Vector2(0, 0.369062), 0.0, 1.4, 0, 0, Vector2(0.0923077, 1.60414), 0.0, 0.0, 0, 0, Vector2(1, 2), 0.0, 0.0, 0, 0] point_count = 3 diff --git a/scene/effect/particle/_particle_hit_ground_normal.tscn b/scene/effect/particle/_particle_hit_ground_normal.tscn index 7b969d2..3b92354 100644 --- a/scene/effect/particle/_particle_hit_ground_normal.tscn +++ b/scene/effect/particle/_particle_hit_ground_normal.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=11 format=3 uid="uid://b1eg05rgvdjk"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_2t2j1"] -[ext_resource type="Shader" path="res://render/shader/particle_ground.gdshader" id="4_riq1c"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_2t2j1"] +[ext_resource type="Shader" uid="uid://wbnso7r87cpj" path="res://render/shader/particle_ground.gdshader" id="4_riq1c"] [ext_resource type="Texture2D" uid="uid://cvm7ouwqnp235" path="res://render/texture/particle/shape/circle4.png" id="5_feq6c"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_0b0aa"] @@ -17,7 +17,7 @@ point_count = 2 curve = SubResource("Curve_ll1if") [sub_resource type="Curve" id="Curve_63se2"] -max_value = 1.5 +_limits = [0.0, 1.5, 0.0, 1.0] _data = [Vector2(0, 0.561815), 0.0, 0.332521, 0, 1, Vector2(1, 0.894336), 0.332521, 0.0, 1, 0] point_count = 2 diff --git a/scene/effect/particle/_particle_slash_blunt1.tscn b/scene/effect/particle/_particle_slash_blunt1.tscn index 35d13cd..ab1b9f2 100644 --- a/scene/effect/particle/_particle_slash_blunt1.tscn +++ b/scene/effect/particle/_particle_slash_blunt1.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=27 format=3 uid="uid://bm6snwwg2ddok"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_u2esg"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="2_wet7j"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_u2esg"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_wet7j"] [ext_resource type="Texture2D" uid="uid://bt32dgn3mag0w" path="res://render/texture/particle/gradient/gradient5.png" id="3_aflcg"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="4_b2ehl"] [ext_resource type="Texture2D" uid="uid://hcpxvwtjhvag" path="res://render/texture/particle/mask/mask11.png" id="5_jmpun"] [ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/particle/noise/noise2.png" id="6_50pya"] [ext_resource type="ArrayMesh" uid="uid://dq207a0waxk0j" path="res://render/mesh/slash1.obj" id="7_t17g5"] -[ext_resource type="Shader" path="res://render/shader/effect_slash_dark.gdshader" id="8_mdgl2"] +[ext_resource type="Shader" uid="uid://yl3qwpecny54" path="res://render/shader/effect_slash_dark.gdshader" id="8_mdgl2"] [ext_resource type="Texture2D" uid="uid://ciusodtprwghg" path="res://render/texture/particle/gradient/gradient4.png" id="9_pwem4"] [ext_resource type="Texture2D" uid="uid://c61nspskft0to" path="res://render/texture/particle/mask/mask14.png" id="10_n0i6s"] [ext_resource type="RibbonTrailMesh" uid="uid://c3hyy5yknwsfl" path="res://render/trail_mesh/flare_blunt_slash.tres" id="11_kifh3"] @@ -92,6 +92,7 @@ emission_ring_axis = Vector3(0, 1, 0) emission_ring_height = 0.2 emission_ring_radius = 1.25 emission_ring_inner_radius = 1.0 +emission_ring_cone_angle = 90.0 radial_velocity_min = 2.99998 radial_velocity_max = 3.99998 radial_velocity_curve = SubResource("CurveTexture_cokjk") diff --git a/scene/effect/particle/_particle_slash_blunt2.tscn b/scene/effect/particle/_particle_slash_blunt2.tscn index 0ccba25..9f0b260 100644 --- a/scene/effect/particle/_particle_slash_blunt2.tscn +++ b/scene/effect/particle/_particle_slash_blunt2.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=27 format=3 uid="uid://nj3tp7sk7ggp"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_tvjg8"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="2_mde7d"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_tvjg8"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_mde7d"] [ext_resource type="Texture2D" uid="uid://bt32dgn3mag0w" path="res://render/texture/particle/gradient/gradient5.png" id="3_5nhix"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="4_e7v1w"] [ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/particle/noise/noise2.png" id="6_dxrrr"] [ext_resource type="ArrayMesh" uid="uid://dq207a0waxk0j" path="res://render/mesh/slash1.obj" id="7_jrlck"] [ext_resource type="Texture2D" uid="uid://hcpxvwtjhvag" path="res://render/texture/particle/mask/mask11.png" id="8_m3081"] -[ext_resource type="Shader" path="res://render/shader/effect_slash_dark.gdshader" id="9_dsdqk"] +[ext_resource type="Shader" uid="uid://yl3qwpecny54" path="res://render/shader/effect_slash_dark.gdshader" id="9_dsdqk"] [ext_resource type="Texture2D" uid="uid://ciusodtprwghg" path="res://render/texture/particle/gradient/gradient4.png" id="10_23j2l"] [ext_resource type="RibbonTrailMesh" uid="uid://c3hyy5yknwsfl" path="res://render/trail_mesh/flare_blunt_slash.tres" id="11_6e8pb"] [ext_resource type="Texture2D" uid="uid://c61nspskft0to" path="res://render/texture/particle/mask/mask14.png" id="11_bwmh1"] @@ -92,6 +92,7 @@ emission_ring_axis = Vector3(0, 1, 0) emission_ring_height = 0.2 emission_ring_radius = 1.25 emission_ring_inner_radius = 1.0 +emission_ring_cone_angle = 90.0 radial_velocity_min = 2.99998 radial_velocity_max = 3.99998 radial_velocity_curve = SubResource("CurveTexture_cokjk") diff --git a/scene/effect/particle/_particle_stab3.tscn b/scene/effect/particle/_particle_stab3.tscn index c2bc616..ab2b59d 100644 --- a/scene/effect/particle/_particle_stab3.tscn +++ b/scene/effect/particle/_particle_stab3.tscn @@ -72,7 +72,6 @@ emitting = false amount = 1 lifetime = 5.0 one_shot = true -seed = 1352074707 fixed_fps = 60 local_coords = true process_material = SubResource("ParticleProcessMaterial_gc3w6") diff --git a/scene/effect/particle/bullet_hero01_short_stab01.tscn b/scene/effect/particle/bullet_hero01_short_stab01.tscn index 3767a38..c9b9c36 100644 --- a/scene/effect/particle/bullet_hero01_short_stab01.tscn +++ b/scene/effect/particle/bullet_hero01_short_stab01.tscn @@ -9,4 +9,3 @@ transform = Transform3D(0.5, 0, 0, 0, 1, 0, 0, 0, 0.5, 0, 0, 0) emitting = true lifetime = 600.0 one_shot = false -seed = 300733846 diff --git a/scene/effect/particle/hero01_fist_air_attack01.tscn b/scene/effect/particle/hero01_fist_air_attack01.tscn new file mode 100644 index 0000000..74563ce --- /dev/null +++ b/scene/effect/particle/hero01_fist_air_attack01.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://cgx1mhxv0ceud"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_spf86"] +[ext_resource type="PackedScene" uid="uid://cjgt2myahbtci" path="res://scene/effect/particle/_particle_fist2.tscn" id="2_rm1x6"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_spf86") + +[node name="Particle" parent="." instance=ExtResource("2_rm1x6")] +transform = Transform3D(0.906308, -0.422618, 0, 0.422618, 0.906308, 0, 0, 0, 1, 0, -0.2, 0) diff --git a/scene/effect/particle/hero01_fist_air_attack02.tscn b/scene/effect/particle/hero01_fist_air_attack02.tscn new file mode 100644 index 0000000..9a950a6 --- /dev/null +++ b/scene/effect/particle/hero01_fist_air_attack02.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://deivjgrdis8jm"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_xein8"] +[ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="2_xein8"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_xein8") + +[node name="Particle" parent="." instance=ExtResource("2_xein8")] +transform = Transform3D(0.7, 0, 0, 0, -3.0598e-08, 0.7, 0, -0.7, -3.0598e-08, 0, 0, 0) diff --git a/scene/effect/particle/hero01_fist_air_skill01_1.tscn b/scene/effect/particle/hero01_fist_air_skill01_1.tscn index da26ce7..446caca 100644 --- a/scene/effect/particle/hero01_fist_air_skill01_1.tscn +++ b/scene/effect/particle/hero01_fist_air_skill01_1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://d10hh1e4u544w"] +[gd_scene load_steps=3 format=3 uid="uid://d4cg1dy0t0ojw"] [ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_buiuf"] [ext_resource type="PackedScene" uid="uid://cxopc3y11lwg1" path="res://scene/effect/particle/_particle_dash1.tscn" id="1_eappe"] diff --git a/scene/effect/particle/hero01_fist_air_skill03_1.tscn b/scene/effect/particle/hero01_fist_air_skill03_1.tscn new file mode 100644 index 0000000..6826f42 --- /dev/null +++ b/scene/effect/particle/hero01_fist_air_skill03_1.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://dnnlwpr6lcsy4"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_tgess"] +[ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="2_5xueu"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_tgess") + +[node name="Particle" parent="." instance=ExtResource("2_5xueu")] +transform = Transform3D(0.590885, 0.104189, 6.03983e-08, 0.104189, -0.590885, -1.7958e-16, 8.92211e-08, 1.57321e-08, -0.4, 0, -0.2, 0) diff --git a/scene/effect/particle/hero01_fist_air_skill03_2.tscn b/scene/effect/particle/hero01_fist_air_skill03_2.tscn new file mode 100644 index 0000000..27efa40 --- /dev/null +++ b/scene/effect/particle/hero01_fist_air_skill03_2.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://b2lvsrv0rdf1k"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_au0r7"] +[ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="2_cs1mb"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_au0r7") + +[node name="Particle" parent="." instance=ExtResource("2_cs1mb")] +transform = Transform3D(0.751754, 0.273616, 6.03983e-08, 0.273616, -0.751754, 0, 1.13512e-07, 4.13149e-08, -0.4, 0, -0.2, 0) diff --git a/scene/effect/particle/hero01_fist_air_skill03_3.tscn b/scene/effect/particle/hero01_fist_air_skill03_3.tscn new file mode 100644 index 0000000..b82321c --- /dev/null +++ b/scene/effect/particle/hero01_fist_air_skill03_3.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://crbji7geunibj"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_0vpbh"] +[ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="2_7sohp"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_0vpbh") + +[node name="Particle" parent="." instance=ExtResource("2_7sohp")] +transform = Transform3D(0.787846, 0.138919, 6.11959e-08, 0.138919, -0.787846, 0, 6.88757e-08, 1.21447e-08, -0.7, 0, -0.2, 0) diff --git a/scene/effect/particle/hero01_fist_attack01.tscn b/scene/effect/particle/hero01_fist_attack01.tscn index 0bd8705..71ef14c 100644 --- a/scene/effect/particle/hero01_fist_attack01.tscn +++ b/scene/effect/particle/hero01_fist_attack01.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://13wmsk01u2sk"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_rh714"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_rh714"] [ext_resource type="PackedScene" uid="uid://cjgt2myahbtci" path="res://scene/effect/particle/_particle_fist2.tscn" id="1_yvekh"] [node name="Particle" type="Node3D"] diff --git a/scene/effect/particle/hero01_fist_attack02.tscn b/scene/effect/particle/hero01_fist_attack02.tscn index b3e8484..e97bda7 100644 --- a/scene/effect/particle/hero01_fist_attack02.tscn +++ b/scene/effect/particle/hero01_fist_attack02.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://dkefudneuw51g"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_jrbsi"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_jrbsi"] [ext_resource type="PackedScene" uid="uid://cjgt2myahbtci" path="res://scene/effect/particle/_particle_fist2.tscn" id="2_iymvk"] [node name="Particle" type="Node3D"] diff --git a/scene/effect/particle/hero01_fist_attack03.tscn b/scene/effect/particle/hero01_fist_attack03.tscn index e7cd682..4d6c40d 100644 --- a/scene/effect/particle/hero01_fist_attack03.tscn +++ b/scene/effect/particle/hero01_fist_attack03.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://664eepl2dhc3"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_t4xot"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_t4xot"] [ext_resource type="PackedScene" uid="uid://cjgt2myahbtci" path="res://scene/effect/particle/_particle_fist2.tscn" id="2_c4jod"] [node name="Particle" type="Node3D"] diff --git a/scene/effect/particle/hero01_fist_attack04.tscn b/scene/effect/particle/hero01_fist_attack04.tscn index 0eda978..7836a6c 100644 --- a/scene/effect/particle/hero01_fist_attack04.tscn +++ b/scene/effect/particle/hero01_fist_attack04.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=3 format=3 uid="uid://dpv38662ndoxd"] [ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="1_p3hpt"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_vhqjo"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_vhqjo"] [node name="Particle" type="Node3D"] script = ExtResource("1_vhqjo") [node name="Particle" parent="." instance=ExtResource("1_p3hpt")] -transform = Transform3D(0.751754, 0.34202, -4.52987e-08, 0.273616, -0.939693, -6.25961e-16, -1.13512e-07, -5.16436e-08, -0.3, 0, -0.2, 0) +transform = Transform3D(0.640125, 0.112871, -5.68248e-08, 0.112871, -0.640125, 0, -5.59615e-08, -9.86753e-09, -0.65, 0, -0.2, 0) diff --git a/scene/effect/particle/hero01_fist_attack05.tscn b/scene/effect/particle/hero01_fist_attack05.tscn index ec6d81f..ee8d206 100644 --- a/scene/effect/particle/hero01_fist_attack05.tscn +++ b/scene/effect/particle/hero01_fist_attack05.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://2jydaphvfpvd"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_vr0wa"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_vr0wa"] [ext_resource type="PackedScene" uid="uid://cjgt2myahbtci" path="res://scene/effect/particle/_particle_fist2.tscn" id="2_w3gpl"] [node name="Particle" type="Node3D"] diff --git a/scene/effect/particle/hero01_fist_skill01.tscn b/scene/effect/particle/hero01_fist_skill01.tscn new file mode 100644 index 0000000..f6e47d5 --- /dev/null +++ b/scene/effect/particle/hero01_fist_skill01.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://b7o38lg06fl4g"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_vrach"] +[ext_resource type="PackedScene" uid="uid://cjgt2myahbtci" path="res://scene/effect/particle/_particle_fist2.tscn" id="2_5qtie"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_vrach") + +[node name="Particle" parent="." instance=ExtResource("2_5qtie")] +transform = Transform3D(0.906308, -0.422618, 0, 0.422618, 0.906308, 0, 0, 0, 1, 0, -0.2, 0) diff --git a/scene/effect/particle/hero01_fist_skill03.tscn b/scene/effect/particle/hero01_fist_skill03.tscn deleted file mode 100644 index b8996e2..0000000 --- a/scene/effect/particle/hero01_fist_skill03.tscn +++ /dev/null @@ -1,10 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dg35c5r582lry"] - -[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_ua8eh"] -[ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="2_8oawf"] - -[node name="Particle" type="Node3D"] -script = ExtResource("1_ua8eh") - -[node name="Particle" parent="." instance=ExtResource("2_8oawf")] -transform = Transform3D(0.8, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 0, 0) diff --git a/scene/effect/particle/hero01_long_air_skill01.tscn b/scene/effect/particle/hero01_long_air_skill01.tscn index dd43cd6..66ca7b4 100644 --- a/scene/effect/particle/hero01_long_air_skill01.tscn +++ b/scene/effect/particle/hero01_long_air_skill01.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://cxecnqr1dnb7r"] +[gd_scene load_steps=3 format=3 uid="uid://dxudtren7l8uh"] [ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_15uh7"] [ext_resource type="PackedScene" uid="uid://c2uyg7ktya04f" path="res://scene/effect/particle/_particle_slash2.tscn" id="1_oea3n"] diff --git a/scene/effect/particle/hero01_long_skill01.tscn b/scene/effect/particle/hero01_long_skill01.tscn deleted file mode 100644 index 75ec15e..0000000 --- a/scene/effect/particle/hero01_long_skill01.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://causskv1ei4uj"] - -[ext_resource type="PackedScene" uid="uid://b2h4pcmlii7dg" path="res://scene/effect/particle/_particle_slash1.tscn" id="1_evguo"] - -[node name="Particle" instance=ExtResource("1_evguo")] -transform = Transform3D(1, 0, 0, 0, -0.707107, 0.353553, 0, -0.707107, -0.353553, 0, 0, 0) diff --git a/scene/effect/particle/hero01_long_skill01_1.tscn b/scene/effect/particle/hero01_long_skill01_1.tscn new file mode 100644 index 0000000..2d91766 --- /dev/null +++ b/scene/effect/particle/hero01_long_skill01_1.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://b2e6gp4412y67"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_wiaej"] +[ext_resource type="PackedScene" uid="uid://c2uyg7ktya04f" path="res://scene/effect/particle/_particle_slash2.tscn" id="2_t2o6b"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_wiaej") + +[node name="Particle" parent="." instance=ExtResource("2_t2o6b")] +transform = Transform3D(0.8, 0, 0, 0, -0.8, 5.24537e-08, 0, -6.99382e-08, -0.6, 0, 0, 0) diff --git a/scene/effect/particle/hero01_long_skill01_2.tscn b/scene/effect/particle/hero01_long_skill01_2.tscn new file mode 100644 index 0000000..cadacf2 --- /dev/null +++ b/scene/effect/particle/hero01_long_skill01_2.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://dwb7rtr0p10t0"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_sxg7p"] +[ext_resource type="PackedScene" uid="uid://c2uyg7ktya04f" path="res://scene/effect/particle/_particle_slash2.tscn" id="2_sstlf"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_sxg7p") + +[node name="Particle" parent="." instance=ExtResource("2_sstlf")] +transform = Transform3D(1, 0, 0, 0, -1, 6.99382e-08, 0, -8.74228e-08, -0.8, 0, 0, 0) diff --git a/scene/effect/particle/hero01_long_skill02.tscn b/scene/effect/particle/hero01_long_skill02.tscn index 46d12c2..24e25b1 100644 --- a/scene/effect/particle/hero01_long_skill02.tscn +++ b/scene/effect/particle/hero01_long_skill02.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=2 format=3 uid="uid://bwapjpr0eg56t"] +[gd_scene load_steps=2 format=3 uid="uid://cojqv1heoo3ta"] [ext_resource type="PackedScene" uid="uid://b2h4pcmlii7dg" path="res://scene/effect/particle/_particle_slash1.tscn" id="1_o7nef"] diff --git a/scene/effect/particle/particle_blood_decal.tscn b/scene/effect/particle/particle_blood_decal.tscn index a75ca46..6f3d5dd 100644 --- a/scene/effect/particle/particle_blood_decal.tscn +++ b/scene/effect/particle/particle_blood_decal.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=6 format=3 uid="uid://ccxyyunj4ohqt"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_6r6qw"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_6r6qw"] [ext_resource type="Texture2D" uid="uid://dhq41finyfgpk" path="res://render/texture/decal/blood.png" id="2_op8c3"] -[ext_resource type="Script" path="res://script/effect/particle_decal.gd" id="3_yeg2u"] +[ext_resource type="Script" uid="uid://m2tgb0yymupx" path="res://script/effect/particle_decal.gd" id="3_yeg2u"] [sub_resource type="Gradient" id="Gradient_lwltf"] offsets = PackedFloat32Array(0, 0.641834, 1) colors = PackedColorArray(0, 0, 0, 0.701961, 0, 0, 0, 0.629552, 0, 0, 0, 0) [sub_resource type="Curve" id="Curve_w5jkx"] -max_value = 0.6 +_limits = [0.0, 0.6, 0.0, 1.0] _data = [Vector2(0, 0.31259), 0.0, 0.953112, 0, 0, Vector2(0.0795756, 0.6), 0.0, 0.0, 0, 0, Vector2(1, 0.6), 0.0, 0.0, 0, 0] point_count = 3 diff --git a/scene/effect/particle/particle_blood_fragment.tscn b/scene/effect/particle/particle_blood_fragment.tscn index 2431249..517e4f0 100644 --- a/scene/effect/particle/particle_blood_fragment.tscn +++ b/scene/effect/particle/particle_blood_fragment.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=3 uid="uid://b0ogpoluxbsxx"] -[ext_resource type="Script" path="res://script/effect/fragment.gd" id="1_cgwed"] +[ext_resource type="Script" uid="uid://d1gkchvlp7w3j" path="res://script/effect/fragment.gd" id="1_cgwed"] [ext_resource type="PackedScene" uid="uid://ccxyyunj4ohqt" path="res://scene/effect/particle/particle_blood_decal.tscn" id="2_2xoel"] [ext_resource type="Material" uid="uid://b3mpocbc8svx2" path="res://render/material/fragment.tres" id="3_8m7fg"] [ext_resource type="Texture2D" uid="uid://bcrr12gbos636" path="res://render/texture/particle/shape/fragment1.png" id="4_4mpud"] diff --git a/scene/effect/particle/particle_common_fragment.tscn b/scene/effect/particle/particle_common_fragment.tscn index 330d6c2..e912610 100644 --- a/scene/effect/particle/particle_common_fragment.tscn +++ b/scene/effect/particle/particle_common_fragment.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://bfnwt1jr830pa"] -[ext_resource type="Script" path="res://script/effect/fragment.gd" id="1_14ie3"] +[ext_resource type="Script" uid="uid://d1gkchvlp7w3j" path="res://script/effect/fragment.gd" id="1_14ie3"] [ext_resource type="Material" uid="uid://b3mpocbc8svx2" path="res://render/material/fragment.tres" id="3_0tado"] [ext_resource type="Texture2D" uid="uid://bcrr12gbos636" path="res://render/texture/particle/shape/fragment1.png" id="4_0awd6"] diff --git a/scene/effect/particle/particle_debug_box.tscn b/scene/effect/particle/particle_debug_box.tscn index eac410c..e094073 100644 --- a/scene/effect/particle/particle_debug_box.tscn +++ b/scene/effect/particle/particle_debug_box.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=6 format=3 uid="uid://ceblxqdmgyu0j"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_bgrcd"] -[ext_resource type="Shader" path="res://render/shader/effect_debug.gdshader" id="2_xpi14"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_bgrcd"] +[ext_resource type="Shader" uid="uid://4mnjdo06f0o7" path="res://render/shader/effect_debug.gdshader" id="2_xpi14"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_hupcc"] render_priority = 0 shader = ExtResource("2_xpi14") +shader_parameter/is_hide = false [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_f5m0v"] particle_flag_rotate_y = true diff --git a/scene/effect/particle/particle_debug_cylinder.tscn b/scene/effect/particle/particle_debug_cylinder.tscn index aa13d66..fb109b2 100644 --- a/scene/effect/particle/particle_debug_cylinder.tscn +++ b/scene/effect/particle/particle_debug_cylinder.tscn @@ -1,11 +1,12 @@ [gd_scene load_steps=6 format=3 uid="uid://bm0unv0m2osgf"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_pded4"] -[ext_resource type="Shader" path="res://render/shader/effect_debug.gdshader" id="2_qehyu"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_pded4"] +[ext_resource type="Shader" uid="uid://4mnjdo06f0o7" path="res://render/shader/effect_debug.gdshader" id="2_qehyu"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_hupcc"] render_priority = 0 shader = ExtResource("2_qehyu") +shader_parameter/is_hide = false [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_f5m0v"] particle_flag_rotate_y = true diff --git a/scene/launcher.tscn b/scene/launcher.tscn index 7648af0..8bfa998 100644 --- a/scene/launcher.tscn +++ b/scene/launcher.tscn @@ -59,7 +59,7 @@ script = ExtResource("2_ewhkj") transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 4.01178, 2.85449) environment = ExtResource("8_mbfoj") current = true -fov = 6.0 +fov = 7.2 size = 7.2 script = ExtResource("4_yqiun") global_effect_curve = SubResource("Curve_f8hvs") diff --git a/script/character/move.gd b/script/character/move.gd index 27d62b4..c8a35c2 100644 --- a/script/character/move.gd +++ b/script/character/move.gd @@ -2,6 +2,7 @@ extends Node3D class_name Move @export var after_image_speed_curve: Curve +@export var speed_curve: Curve var after_image_speed_max: float = 10 @@ -66,7 +67,8 @@ func update_speed_y(delta) -> void: func update_move(delta): - var move_velocity: Vector2 = status.move_dir.normalized() * (status.cfg.move.speed * (1 + status.speed_up_rate)) + var speed_rate = speed_curve.sample(status.speed_up_rate) + var move_velocity: Vector2 = status.move_dir.normalized() * (status.cfg.move.speed * speed_rate) var skill_velocity: Vector2 = status.skill_move_dir * status.skill_move_speed if not status.skill_move_stop else Vector2.ZERO var hit_back_velocity: Vector2 = status.hit_back_dir * status.hit_back_speed move_velocity += skill_velocity + hit_back_velocity @@ -98,7 +100,7 @@ func update_deformation(_delta): var dir_y: int = 1 if (velocity_change_y > 1) or (velocity_change_x < -1) else 0 if dir_x or dir_y: status.deformation_dir = Vector2(dir_x, dir_y) - character.add_buff("deformation", 0.2) + character.add_buff("deformation", 0.4) func update_move_effect(delta): diff --git a/script/character/player/combo.gd b/script/character/player/combo.gd index 3a03649..e0c6361 100644 --- a/script/character/player/combo.gd +++ b/script/character/player/combo.gd @@ -21,7 +21,7 @@ func _ready(): # test add_basic_skill() add_weapon(load("res://config/weapon/long.tres") as WeaponCfg) - add_weapon(load("res://config/weapon/short.tres") as WeaponCfg) + # add_weapon(load("res://config/weapon/short.tres") as WeaponCfg) add_weapon(load("res://config/weapon/fist.tres") as WeaponCfg) core.set_active_core(0, load("res://config/core/hero01_soul_slash.tres") as CoreCfg) diff --git a/script/character/skill.gd b/script/character/skill.gd index a0da59a..f530e2b 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -131,7 +131,7 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = "") -> vo skill_move_dir = skill_move_dir.normalized() if skill_move_dir.length() == 0: skill_move_dir = Vector2.RIGHT if status.is_right else Vector2.LEFT - else: + elif cfg.is_lock_x_move_sub: #限定释放方向为左右45度以内 var angle: float = skill_move_dir.angle() if angle > PI / 4 and angle < PI * 3 / 4: diff --git a/script/character/view.gd b/script/character/view.gd index a90817d..0dcefac 100644 --- a/script/character/view.gd +++ b/script/character/view.gd @@ -187,7 +187,7 @@ func _update_material(): var material: ShaderMaterial = material_override as ShaderMaterial var material2: ShaderMaterial = material_override.next_pass as ShaderMaterial var tex: Texture2D = sprite_frames.get_frame_texture(animation, frame) - var deformation_rate: float = status.deformation_rate * (0.5 if status.is_floating else 0.4) + var deformation_rate: float = status.deformation_rate * (0.6 if status.is_floating else 0.4) if material: material.set_shader_parameter("flash_white", status.flash_white_rate) material.set_shader_parameter("deformation_dir", status.deformation_dir) diff --git a/script/config/skill_cfg.gd b/script/config/skill_cfg.gd index d81a066..213169b 100644 --- a/script/config/skill_cfg.gd +++ b/script/config/skill_cfg.gd @@ -25,8 +25,9 @@ var refresh_animation: Callable = check_animation @export var mp_sub_cost: bool @export var free_lock: bool @export var ignore_push: bool -@export var is_lock_x: bool = true -@export var is_lock_x_move: bool = false +@export var is_lock_x: bool = true # 技能释放方向锁定到x轴 +@export var is_lock_x_move: bool = false # 技能移动方向锁定到x轴 +@export var is_lock_x_move_sub: bool = true # 技能移动方向锁定到x轴45度偏差内 @export_group("辅助参数") @export var range: float @export var warn_type: Enum.ESkillWarnType = Enum.ESkillWarnType.None @@ -37,7 +38,7 @@ var owner: CharacterCfg func check_animation() -> bool: var res_name: String = get_res_name() - var path: String = "res://resource/skill_animation/%s.tres" % res_name + var path: String = "res://resource/skill_animation/%s.tres" % res_name if sprite_frames == null: print("未设置技能动画资源:", res_name) return false @@ -57,20 +58,20 @@ func check_animation() -> bool: return true -func get_attack1()->AttackCfg: return attack1 +func get_attack1() -> AttackCfg: return attack1 -func get_attack1_box()->AttackBoxCfg: return attack1_box +func get_attack1_box() -> AttackBoxCfg: return attack1_box -func get_attack2()->AttackCfg: return attack2 +func get_attack2() -> AttackCfg: return attack2 -func get_attack2_box()->AttackBoxCfg: return attack2_box +func get_attack2_box() -> AttackBoxCfg: return attack2_box -func get_attack_particle(index: int)->Resource: - var res_name: String = get_res_name() +func get_attack_particle(index: int) -> Resource: + var res_name: String = get_res_name() var path_index: String = "res://scene/effect/particle/%s_%d.tscn" % [res_name, index] if ResourceLoader.exists(path_index): attack_particle[index] = load(path_index) @@ -86,8 +87,7 @@ func get_attack_particle(index: int)->Resource: func get_owner() -> CharacterCfg: if not owner: var owner_name: String = get_res_name().split("_")[0] - var path: String = "res://config/character/%s.tres" % owner_name + var path: String = "res://config/character/%s.tres" % owner_name if ResourceLoader.exists(path): owner = load(path) as CharacterCfg return owner - diff --git a/script/manager/camera_manager.gd b/script/manager/camera_manager.gd index 28e2d74..120c581 100644 --- a/script/manager/camera_manager.gd +++ b/script/manager/camera_manager.gd @@ -10,7 +10,7 @@ var target_pos_y: float var target_pos_now: Vector2 = Vector2.ZERO var level_size: Vector2 = Vector2(12.8, 7.68) var level_pos: Vector2 = Vector2.ZERO -var offset: float = 50 +var offset: float = 40 var shake_offset_x: float var camera_limit: Vector3 = Vector3(6.4, 1.7, 2.95) # x,z-up,z-down var camera_size: float = 7.2 @@ -59,9 +59,10 @@ func update_global_effect(delta): match global_effect.effect_type: Enum.EGlobalEffect.CameraSize: size = camera_size * (1 - value) + fov = camera_size * (1 - value) refresh_target_pos() Enum.EGlobalEffect.CameraShake: - shake_offset_x = (sin(rate * PI * 10) - 0.5) * 0.04 * value + shake_offset_x = (sin(rate * PI * 10) - 0.5) * 0.1 * value Enum.EGlobalEffect.ColorShift: Global.view_mgr.set_post_processing("shift_strength", value) Enum.EGlobalEffect.Blur: @@ -164,10 +165,10 @@ func effect(pause_time) -> void: var basic_pause_time: float = 0.3 var effect_time = pause_time * 2 var rate = pause_time / basic_pause_time - add_global_effect(Enum.EGlobalEffect.CameraShake, effect_time, 0.8 * rate) - add_global_effect(Enum.EGlobalEffect.CameraSize, effect_time, 0.1 * rate) - add_global_effect(Enum.EGlobalEffect.ColorShift, effect_time, 0.8 * rate) - add_global_effect(Enum.EGlobalEffect.Blur, effect_time, 0.8 * rate) + add_global_effect(Enum.EGlobalEffect.CameraShake, effect_time, 0.2 * rate) + add_global_effect(Enum.EGlobalEffect.CameraSize, effect_time, 0.15 * rate) + add_global_effect(Enum.EGlobalEffect.ColorShift, effect_time, 1.2 * rate) + add_global_effect(Enum.EGlobalEffect.Blur, effect_time, 1.0 * rate) #add_global_effect(Enum.EGlobalEffect.SpeedLine,effect_time,0.2* rate) return