diff --git a/config/attack/blunt_mid_hit_down.tres b/config/attack/blunt_mid_hit_down.tres new file mode 100644 index 0000000..13e0b0d --- /dev/null +++ b/config/attack/blunt_mid_hit_down.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://dr70nrjjk754r"] + +[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_esnha"] + +[resource] +script = ExtResource("1_esnha") +damage_rate = 1.0 +break_level = 2 +stun_attack = 10.0 +damage_type = 1 +is_floating = false +is_hit_down = true +is_rebound = false +hit_back_speed = 6.0 +hit_up_speed = -6.0 +hit_back_duration = 0.05 +hit_up_duration = 0.05 +pause_time = 0.15 +is_force_pause = false diff --git a/config/attack/rebound.tres b/config/attack/rebound.tres index 5d90d85..353b69e 100644 --- a/config/attack/rebound.tres +++ b/config/attack/rebound.tres @@ -7,7 +7,7 @@ script = ExtResource("1_2fwsa") damage_rate = 1.0 break_level = 1 stun_attack = 10.0 -damage_type = 1 +damage_type = 2 is_floating = true is_hit_down = false is_rebound = true @@ -17,7 +17,3 @@ hit_back_duration = 0.0 hit_up_duration = 0.05 pause_time = 0.15 is_force_pause = false -height = 2.0 -radius = 0.0 -size = Vector2(2, 1) -offset = Vector2(1, 0) diff --git a/config/skill_player_weapon/hero01_fist_air_attack01.tres b/config/skill_player_weapon/hero01_fist_air_attack01.tres new file mode 100644 index 0000000..5e32743 --- /dev/null +++ b/config/skill_player_weapon/hero01_fist_air_attack01.tres @@ -0,0 +1,24 @@ +[gd_resource type="Resource" script_class="SkillPlayerCfg" load_steps=7 format=3 uid="uid://hg7aptg0wl1j"] + +[ext_resource type="Resource" uid="uid://dib6g7t6p5ac2" path="res://config/attack/blunt_normal_hit.tres" id="1_v7ajo"] +[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_6x3pw"] +[ext_resource type="Script" path="res://script/config/player_skill_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"] + +[resource] +script = ExtResource("3_v1wiv") +weapon = ExtResource("6_aclp5") +stance_from = 10 +stance_to = 11 +break_level = 3 +action = "attack_light" +name = "" +skill_animation = ExtResource("4_nfkff") +free_lock = false +attack1 = ExtResource("1_v7ajo") +attack1_box = ExtResource("2_6x3pw") +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 new file mode 100644 index 0000000..27cb812 --- /dev/null +++ b/config/skill_player_weapon/hero01_fist_air_attack02.tres @@ -0,0 +1,24 @@ +[gd_resource type="Resource" script_class="SkillPlayerCfg" load_steps=7 format=3 uid="uid://d1q7buaerirow"] + +[ext_resource type="Resource" uid="uid://dib6g7t6p5ac2" path="res://config/attack/blunt_normal_hit.tres" id="1_cut8n"] +[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_bgip4"] +[ext_resource type="Script" path="res://script/config/player_skill_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"] + +[resource] +script = ExtResource("3_agxba") +weapon = ExtResource("6_ad202") +stance_from = 11 +stance_to = 12 +break_level = 3 +action = "attack_light" +name = "" +skill_animation = ExtResource("4_jbb00") +free_lock = false +attack1 = ExtResource("1_cut8n") +attack1_box = ExtResource("2_bgip4") +refresh_animation = false +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 new file mode 100644 index 0000000..4396bf7 --- /dev/null +++ b/config/skill_player_weapon/hero01_fist_air_attack03.tres @@ -0,0 +1,24 @@ +[gd_resource type="Resource" script_class="SkillPlayerCfg" load_steps=7 format=3 uid="uid://0nysxqwoq5tj"] + +[ext_resource type="Resource" uid="uid://dr70nrjjk754r" path="res://config/attack/blunt_mid_hit_down.tres" id="1_w8lg4"] +[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_2gnst"] +[ext_resource type="Script" path="res://script/config/player_skill_cfg.gd" id="3_ghxjs"] +[ext_resource type="Animation" uid="uid://dfe8krunqdf3m" path="res://resource/skill_animation/hero01_fist_air_attack03.tres" id="4_y802t"] +[ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="5_pslv2"] +[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_t7m8t"] + +[resource] +script = ExtResource("3_ghxjs") +weapon = ExtResource("6_t7m8t") +stance_from = 12 +stance_to = 13 +break_level = 3 +action = "attack_light" +name = "" +skill_animation = ExtResource("4_y802t") +free_lock = false +attack1 = ExtResource("1_w8lg4") +attack1_box = ExtResource("2_2gnst") +refresh_animation = false +sprite_frames = ExtResource("5_pslv2") +animation_name = "fist_air_attack03" diff --git a/resource/animation/character/hero01_fist_attack.aseprite b/resource/animation/character/hero01_fist_attack.aseprite index 45b4ede..dd8f821 100644 Binary files a/resource/animation/character/hero01_fist_attack.aseprite and b/resource/animation/character/hero01_fist_attack.aseprite differ diff --git a/resource/animation/character/hero01_fist_attack.png b/resource/animation/character/hero01_fist_attack.png index 63c60a2..a4ef97f 100644 Binary files a/resource/animation/character/hero01_fist_attack.png and b/resource/animation/character/hero01_fist_attack.png differ diff --git a/resource/skill_animation/hero01_fist_air_attack01.tres b/resource/skill_animation/hero01_fist_air_attack01.tres new file mode 100644 index 0000000..2a87445 --- /dev/null +++ b/resource/skill_animation/hero01_fist_air_attack01.tres @@ -0,0 +1,119 @@ +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://chj3rlh6krt66"] + +[ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="1_hxg0r"] + +[resource] +resource_name = "hero01_fist_air_attack01" +length = 0.8 +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_hxg0r")] +} +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_air_attack01"] +} +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), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7] +} +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.5), +"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:speed_up_rate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.2, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [-0.5, -1.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Status:skill_move_speed") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.1, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [1.0, 0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Status:skill_float_speed") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0.1, 1.0, 0.0] +} +tracks/7/type = "method" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Battle") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"attack1" +}] +} +tracks/8/type = "method" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Effect") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0.1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}] +} diff --git a/resource/skill_animation/hero01_fist_air_attack02.tres b/resource/skill_animation/hero01_fist_air_attack02.tres new file mode 100644 index 0000000..42502a1 --- /dev/null +++ b/resource/skill_animation/hero01_fist_air_attack02.tres @@ -0,0 +1,119 @@ +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://dia1xwl6foafg"] + +[ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="1_h03mj"] + +[resource] +resource_name = "hero01_fist_air_attack02" +length = 0.6 +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_h03mj")] +} +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_air_attack02"] +} +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), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5] +} +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.4, 0.5), +"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:speed_up_rate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.2, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [-0.5, -1.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Status:skill_move_speed") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.1, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [1.0, 0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Status:skill_float_speed") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0.1, 2.0, 0.0] +} +tracks/7/type = "method" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Battle") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"attack1" +}] +} +tracks/8/type = "method" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Effect") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0.1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}] +} diff --git a/resource/skill_animation/hero01_fist_air_attack03.tres b/resource/skill_animation/hero01_fist_air_attack03.tres new file mode 100644 index 0000000..99c169d --- /dev/null +++ b/resource/skill_animation/hero01_fist_air_attack03.tres @@ -0,0 +1,119 @@ +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://dfe8krunqdf3m"] + +[ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="1_yejui"] + +[resource] +resource_name = "hero01_fist_air_attack03" +length = 0.6 +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_yejui")] +} +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_air_attack03"] +} +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), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5] +} +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.5), +"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:speed_up_rate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.2, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [-0.5, -1.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Status:skill_move_speed") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.1, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [1.0, 0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Status:skill_float_speed") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0.1, 1.0, 0.0] +} +tracks/7/type = "method" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Battle") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"attack1" +}] +} +tracks/8/type = "method" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Effect") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0.1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}] +} diff --git a/resource/skill_animation/hero01_fist_attack05.tres b/resource/skill_animation/hero01_fist_attack05.tres index b1fec2d..de196d4 100644 --- a/resource/skill_animation/hero01_fist_attack05.tres +++ b/resource/skill_animation/hero01_fist_attack05.tres @@ -93,25 +93,13 @@ tracks/6/keys = { "method": &"cast_attack_particle1" }] } -tracks/7/type = "value" +tracks/7/type = "method" tracks/7/imported = false tracks/7/enabled = true -tracks/7/path = NodePath("View:frame") +tracks/7/path = NodePath("Effect") 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, 0.9, 1, 1.1, 1.2), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] -} -tracks/8/type = "method" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Effect") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "values": [{ @@ -128,3 +116,15 @@ tracks/8/keys = { "method": &"cast_after_image" }] } +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("View:frame") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +} diff --git a/resource/skill_animation_library/animation_library.tres b/resource/skill_animation_library/animation_library.tres index e49f3b9..4aa142d 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=26 format=3 uid="uid://croik07a1qko5"] +[gd_resource type="AnimationLibrary" load_steps=29 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://p8l0puqxrkwh" path="res://resource/skill_animation/hero01_long_air_attack01.tres" id="1_b46g3"] @@ -20,6 +20,9 @@ [ext_resource type="Animation" uid="uid://cwm116apu63n1" path="res://resource/skill_animation/hero01_long_flash.tres" id="5_fumom"] [ext_resource type="Animation" uid="uid://bjnkrte7660pt" path="res://resource/skill_animation/hero01_long_skill01.tres" id="5_kt0qw"] [ext_resource type="Animation" uid="uid://iprcbf277rf4" path="res://resource/skill_animation/hero01_long_skill02.tres" id="7_ui68j"] +[ext_resource type="Animation" uid="uid://chj3rlh6krt66" path="res://resource/skill_animation/hero01_fist_air_attack01.tres" id="8_svst8"] +[ext_resource type="Animation" uid="uid://dia1xwl6foafg" path="res://resource/skill_animation/hero01_fist_air_attack02.tres" id="9_0fycy"] +[ext_resource type="Animation" uid="uid://dfe8krunqdf3m" path="res://resource/skill_animation/hero01_fist_air_attack03.tres" id="10_te03d"] [ext_resource type="Animation" uid="uid://c8qll8wcn633m" path="res://resource/skill_animation/hero01_short_attack04.tres" id="11_bxi8a"] [ext_resource type="Animation" uid="uid://xfuwfwtw4cna" path="res://resource/skill_animation/hero01_short_attack02.tres" id="11_h2vlt"] [ext_resource type="Animation" uid="uid://bdyjvq185tdk6" path="res://resource/skill_animation/hero01_short_attack03.tres" id="11_kejyu"] @@ -32,6 +35,9 @@ _data = { "hero01_common_skill0102": ExtResource("2_8l02x"), "hero01_common_skill0103": ExtResource("3_ily05"), "hero01_common_skill02": ExtResource("4_vtwy2"), +"hero01_fist_air_attack01": ExtResource("8_svst8"), +"hero01_fist_air_attack02": ExtResource("9_0fycy"), +"hero01_fist_air_attack03": ExtResource("10_te03d"), "hero01_fist_air_skill01": ExtResource("5_df32u"), "hero01_fist_attack01": ExtResource("1_4bwwm"), "hero01_fist_attack02": ExtResource("2_vx7p1"), diff --git a/scene/character/player.tscn b/scene/character/player.tscn index b967755..9c61cd1 100644 --- a/scene/character/player.tscn +++ b/scene/character/player.tscn @@ -1,7 +1,6 @@ -[gd_scene load_steps=8 format=3 uid="uid://ba2trga1rrba8"] +[gd_scene load_steps=7 format=3 uid="uid://ba2trga1rrba8"] [ext_resource type="PackedScene" uid="uid://8rcvw1vnjcf7" path="res://scene/character/character.tscn" id="1_pot50"] -[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="2_7gyv2"] [ext_resource type="Script" path="res://script/character/player/combo.gd" id="2_i44w8"] [ext_resource type="Script" path="res://script/character/player/player_input.gd" id="3_n07go"] [ext_resource type="Script" path="res://script/character/player/core.gd" id="3_rxdse"] @@ -12,24 +11,23 @@ [node name="View" parent="." index="3"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.693056, 0) -sprite_frames = ExtResource("2_7gyv2") -animation = &"long_attack01" +animation = &"fist_air_attack02" -[node name="Combo" type="Node3D" parent="." index="8"] +[node name="Combo" type="Node3D" parent="." index="9"] unique_name_in_owner = true script = ExtResource("2_i44w8") -[node name="Core" type="Node3D" parent="." index="9"] +[node name="Core" type="Node3D" parent="." index="10"] unique_name_in_owner = true script = ExtResource("3_rxdse") -[node name="PlayerInput" type="Node3D" parent="." index="10"] +[node name="PlayerInput" type="Node3D" parent="." index="11"] unique_name_in_owner = true script = ExtResource("3_n07go") -[node name="PlayerAction" type="Node3D" parent="." index="11"] +[node name="PlayerAction" type="Node3D" parent="." index="12"] unique_name_in_owner = true script = ExtResource("5_gum7v") -[node name="PlayerInfo" type="Node3D" parent="." index="12"] +[node name="PlayerInfo" type="Node3D" parent="." index="13"] script = ExtResource("4_mi1lk") diff --git a/scene/effect/particle/_particle_fist1.tscn b/scene/effect/particle/_particle_fist1.tscn index 1f40e48..b43f459 100644 --- a/scene/effect/particle/_particle_fist1.tscn +++ b/scene/effect/particle/_particle_fist1.tscn @@ -29,8 +29,8 @@ curve = SubResource("Curve_8eifw") particle_flag_rotate_y = true angle_min = 180.0 angle_max = 180.0 -angular_velocity_min = -360.0 -angular_velocity_max = -360.0 +angular_velocity_min = -480.0 +angular_velocity_max = -480.0 gravity = Vector3(0, 0, 0) alpha_curve = SubResource("CurveTexture_l34bo") @@ -45,7 +45,7 @@ cast_shadow = 0 gi_mode = 0 emitting = false amount = 1 -lifetime = 0.3 +lifetime = 0.25 one_shot = true speed_scale = 2.0 fixed_fps = 60 diff --git a/scene/effect/particle/hero01_fist_attack02.tscn b/scene/effect/particle/hero01_fist_attack02.tscn index d038d7c..040a9fa 100644 --- a/scene/effect/particle/hero01_fist_attack02.tscn +++ b/scene/effect/particle/hero01_fist_attack02.tscn @@ -4,6 +4,3 @@ [node name="Particle" instance=ExtResource("1_6bk1j")] transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 0, 0) - -[node name="Slash" parent="." index="0"] -transform = Transform3D(0.3, 0, 0, 0, 1, 0, 0, 0, 0.2, 0, 0, 0) diff --git a/scene/effect/particle/particle_hit_ground.tscn b/scene/effect/particle/particle_hit_ground.tscn new file mode 100644 index 0000000..eb0224a --- /dev/null +++ b/scene/effect/particle/particle_hit_ground.tscn @@ -0,0 +1,205 @@ +[gd_scene load_steps=40 format=3 uid="uid://dpewyvwr7358m"] + +[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_c4i0s"] +[ext_resource type="Shader" path="res://render/shader/particle.gdshader" id="2_028e2"] +[ext_resource type="Texture2D" uid="uid://ccl81e2qroccb" path="res://render/texture/particle/shape/flare2.png" id="3_h47rb"] +[ext_resource type="Texture2D" uid="uid://bslhqlcg8cw2l" path="res://render/texture/particle/shape/flare3.png" id="4_x4pau"] +[ext_resource type="Texture2D" uid="uid://colhtjt8jon3v" path="res://render/texture/particle/shape/smoke.png" id="5_ji4m5"] +[ext_resource type="Shader" path="res://render/shader/trail.gdshader" id="6_jp3yv"] +[ext_resource type="Texture2D" uid="uid://b0bmvub81xvmf" path="res://render/texture/particle/shape/glow.png" id="7_u8iqs"] +[ext_resource type="PackedScene" uid="uid://5d1a3s6x77wd" path="res://scene/effect/particle/_particle_hit_ground.tscn" id="8_x8r0p"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_dkmkb"] +render_priority = 0 +shader = ExtResource("2_028e2") +shader_parameter/is_billboard = null +shader_parameter/tex_main = ExtResource("3_h47rb") + +[sub_resource type="Curve" id="Curve_n5hkj"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_hdmmt"] +curve = SubResource("Curve_n5hkj") + +[sub_resource type="Gradient" id="Gradient_wb6fx"] +offsets = PackedFloat32Array(0, 0.291429, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 0.649479, 1, 1, 1, 0.223529, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_8ltar"] +gradient = SubResource("Gradient_wb6fx") + +[sub_resource type="Curve" id="Curve_2o6rl"] +max_value = 1.5 +_data = [Vector2(0, 0.758242), 0.0, 2.00769, 0, 0, Vector2(0.0394089, 1.08791), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_5ce5r"] +curve = SubResource("Curve_2o6rl") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_acw2w"] +particle_flag_disable_z = true +angle_min = 1.07288e-05 +angle_max = 720.0 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_5ce5r") +color_ramp = SubResource("GradientTexture1D_8ltar") +alpha_curve = SubResource("CurveTexture_hdmmt") + +[sub_resource type="QuadMesh" id="QuadMesh_0j7av"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_i0f24"] +render_priority = 0 +shader = ExtResource("2_028e2") +shader_parameter/is_billboard = null +shader_parameter/tex_main = ExtResource("4_x4pau") + +[sub_resource type="Curve" id="Curve_3uvr5"] +_data = [Vector2(0, 0.461538), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_1og0n"] +curve = SubResource("Curve_3uvr5") + +[sub_resource type="Gradient" id="Gradient_tj5v6"] +offsets = PackedFloat32Array(0.0171429, 0.182857) +colors = PackedColorArray(0.952941, 1, 1, 1, 0.976471, 1, 0.396078, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_g0jyv"] +gradient = SubResource("Gradient_tj5v6") + +[sub_resource type="Curve" id="Curve_8klc5"] +max_value = 2.0 +_data = [Vector2(0, 0.615385), 0.0, 1.4, 0, 0, Vector2(1, 2), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_k3cwo"] +curve = SubResource("Curve_8klc5") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_3w28u"] +particle_flag_disable_z = true +angle_min = 1.07288e-05 +angle_max = 720.0 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_k3cwo") +color_ramp = SubResource("GradientTexture1D_g0jyv") +alpha_curve = SubResource("CurveTexture_1og0n") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vkw8i"] +render_priority = 0 +shader = ExtResource("2_028e2") +shader_parameter/is_billboard = false +shader_parameter/tex_main = ExtResource("5_ji4m5") + +[sub_resource type="Curve" id="Curve_didyq"] +_data = [Vector2(0, 0.32967), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_3pi6l"] +curve = SubResource("Curve_didyq") + +[sub_resource type="Curve" id="Curve_6dnuy"] +max_value = 4.0 +_data = [Vector2(0, 1.75824), 0.0, 0.0, 0, 0, Vector2(1, 2.76923), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_skg43"] +curve = SubResource("Curve_6dnuy") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gjwvd"] +particle_flag_disable_z = true +angle_min = 1.07288e-05 +angle_max = 720.0 +velocity_pivot = Vector3(0, 0, 1) +spread = 180.0 +initial_velocity_max = 0.2 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_skg43") +color = Color(0.521569, 0.509804, 0.501961, 1) +alpha_curve = SubResource("CurveTexture_3pi6l") + +[sub_resource type="QuadMesh" id="QuadMesh_0kefl"] + +[sub_resource type="Curve" id="Curve_axcwu"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_wpjie"] +curve = SubResource("Curve_axcwu") + +[sub_resource type="Gradient" id="Gradient_q1rex"] +offsets = PackedFloat32Array(0, 0.285714, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 0.52549, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_x4ksg"] +gradient = SubResource("Gradient_q1rex") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_5lomq"] +spread = 180.0 +initial_velocity_min = 4.0 +initial_velocity_max = 5.0 +color_ramp = SubResource("GradientTexture1D_x4ksg") +alpha_curve = SubResource("CurveTexture_wpjie") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_hrjt4"] +render_priority = 0 +shader = ExtResource("6_jp3yv") +shader_parameter/tex_main = ExtResource("7_u8iqs") + +[sub_resource type="RibbonTrailMesh" id="RibbonTrailMesh_urftu"] +material = SubResource("ShaderMaterial_hrjt4") +size = 0.1 + +[node name="Particle" type="Node3D"] +script = ExtResource("1_c4i0s") + +[node name="Slash" type="GPUParticles3D" parent="."] +layers = 512 +material_override = SubResource("ShaderMaterial_dkmkb") +cast_shadow = 0 +emitting = false +amount = 1 +lifetime = 0.15 +one_shot = true +fixed_fps = 60 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_acw2w") +draw_pass_1 = SubResource("QuadMesh_0j7av") + +[node name="Slash2" type="GPUParticles3D" parent="."] +layers = 512 +material_override = SubResource("ShaderMaterial_i0f24") +cast_shadow = 0 +emitting = false +amount = 1 +lifetime = 0.15 +one_shot = true +fixed_fps = 60 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_3w28u") +draw_pass_1 = SubResource("QuadMesh_0j7av") + +[node name="Smoke" type="GPUParticles3D" parent="."] +layers = 512 +material_override = SubResource("ShaderMaterial_vkw8i") +cast_shadow = 0 +emitting = false +amount = 2 +lifetime = 2.0 +one_shot = true +explosiveness = 1.0 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_gjwvd") +draw_pass_1 = SubResource("QuadMesh_0kefl") + +[node name="Flare" type="GPUParticles3D" parent="."] +emitting = false +lifetime = 0.3 +one_shot = true +explosiveness = 1.0 +trail_enabled = true +trail_lifetime = 0.1 +process_material = SubResource("ParticleProcessMaterial_5lomq") +draw_pass_1 = SubResource("RibbonTrailMesh_urftu") + +[node name="Particle" parent="." instance=ExtResource("8_x8r0p")] diff --git a/script/_global/enum.gd b/script/_global/enum.gd index 0482aac..1ccbd51 100644 --- a/script/_global/enum.gd +++ b/script/_global/enum.gd @@ -2,7 +2,7 @@ extends Node3D enum EActionType {Pressed, Released} -enum EDamageType {Sharp, Blunt} +enum EDamageType {Sharp, Blunt, Ground} enum ECharacterType {Player, Monster, Bullet} enum ETeam {Player, Monster} enum EStance { diff --git a/script/character/battle.gd b/script/character/battle.gd index 9f19ef4..b683acc 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -166,6 +166,7 @@ func settle(hit_info:HitInfo) -> bool: match attack.damage_type: Enum.EDamageType.Sharp:character_to.cast_particle(ResourceManager.particle_hit_sharp,false) Enum.EDamageType.Blunt:character_to.cast_particle(ResourceManager.particle_hit_blunt,false) + Enum.EDamageType.Ground:character_to.cast_particle(ResourceManager.particle_hit_ground,false) #抖动 character_to.add_buff("shake_x",0.2,true) diff --git a/script/character/player/combo.gd b/script/character/player/combo.gd index 0832a9f..8735869 100644 --- a/script/character/player/combo.gd +++ b/script/character/player/combo.gd @@ -18,7 +18,7 @@ func _ready(): add_weapon(load("res://config/weapon/long.tres")) add_weapon(load("res://config/weapon/short.tres")) add_weapon(load("res://config/weapon/fist.tres")) - add_weapon(load("res://config/weapon/chain.tres")) + #add_weapon(load("res://config/weapon/chain.tres")) func _process(delta): update_input_alive(delta) @@ -37,15 +37,18 @@ func update_break(): for break_level_name in Enum.EBreakLevel: var break_level = Enum.EBreakLevel[break_level_name] if break_level <= status.break_level: + var is_break = false match break_level: Enum.EBreakLevel.None: pass - Enum.EBreakLevel.Cancel: update_break_cancel() - Enum.EBreakLevel.Jump: update_break_jump() - Enum.EBreakLevel.Break: update_break_break() - Enum.EBreakLevel.Walk: update_break_walk() + Enum.EBreakLevel.Cancel: is_break = update_break_cancel() + Enum.EBreakLevel.Jump: is_break = update_break_jump() + Enum.EBreakLevel.Break: is_break = update_break_break() + Enum.EBreakLevel.Walk: is_break = update_break_walk() + if is_break: + break func update_break_cancel(): - update_break_by_level(Enum.EBreakLevel.Cancel) + return update_break_by_level(Enum.EBreakLevel.Cancel) func update_break_jump(): for i in range(0,len(input_list)): @@ -54,15 +57,18 @@ func update_break_jump(): refresh_input(i) skill.cancel_skill() move.jump() - return + return true + return false func update_break_break(): - update_break_by_level(Enum.EBreakLevel.Break) + return update_break_by_level(Enum.EBreakLevel.Break) func update_break_walk(): if status.is_skill_running and status.input_dir.length() > 0: refresh_input(len(input_list)) skill.cancel_skill() + return true + return false func update_break_by_level(break_level:Enum.EBreakLevel): for i in range(0,len(input_list)): @@ -82,7 +88,8 @@ func update_break_by_level(break_level:Enum.EBreakLevel): skill.cast_skill(skill_cfg,status.input_dir) status.stance = skill_player_weapon_cfg.stance_to refresh_input(i) - return + return true + return false func refresh_input(index:int): if index >= len(input_list)-1: @@ -95,7 +102,10 @@ func update_move(): if status.is_skill_running: pass else: - status.stance = Enum.EStance.Idle if status.is_on_floor else Enum.EStance.AirIdle + if not status.is_on_floor or status.is_jumping: + status.stance = Enum.EStance.AirIdle + else: + status.stance = Enum.EStance.Idle status.break_level = Enum.EBreakLevel.Walk func add_input_action(action:String): diff --git a/script/effect/effect_base.gd b/script/effect/effect_base.gd index 9628d71..c6ec540 100644 --- a/script/effect/effect_base.gd +++ b/script/effect/effect_base.gd @@ -1,23 +1,23 @@ extends Node3D class_name EffectBase -@export var life_time : float = 1 -var life_time_now : float +@export var lifetime : float = 1 +var lifetime_now : float var is_pause : bool = false var rate : float func _ready(): - life_time_now = life_time + lifetime_now = lifetime on_ready() func _process(delta): if is_pause: return - life_time_now -= delta - if life_time_now <= 0: + lifetime_now -= delta + if lifetime_now <= 0: queue_free() return - rate = life_time_now / life_time + rate = lifetime_now / lifetime on_process(delta) func set_pause(is_pause_set:bool): diff --git a/script/effect/particle.gd b/script/effect/particle.gd index 79c44ca..c979793 100644 --- a/script/effect/particle.gd +++ b/script/effect/particle.gd @@ -1,13 +1,16 @@ extends EffectBase class_name Particle +var sub_particle_list : Array[Particle] var particle_list : Array[GPUParticles3D] var speed_scale_list = [] var decal_list = [] func on_ready(): for child in get_children(): - if child is GPUParticles3D: + if child is Particle: + sub_particle_list.append(child) + elif child is GPUParticles3D: var particle = child as GPUParticles3D particle_list.append(particle) speed_scale_list.append(particle.speed_scale) @@ -16,12 +19,12 @@ func on_ready(): decal_list.append(child) else: continue - if child.lifetime > life_time_now: - life_time_now = child.lifetime + if child.lifetime > lifetime_now: + lifetime_now = child.lifetime for particle : GPUParticles3D in particle_list: - if particle.lifetime > life_time_now: - life_time_now = particle.lifetime + if particle.lifetime > lifetime_now: + lifetime_now = particle.lifetime func on_process(delta:float): for decal : ParticleDecal in decal_list: @@ -32,3 +35,5 @@ func on_set_pause(is_pause_set:bool): var particle = particle_list[i] var speed_scale = speed_scale_list[i] particle.speed_scale = 0 if is_pause else speed_scale + for sub_particle:Particle in sub_particle_list: + sub_particle.set_pause(is_pause_set) diff --git a/script/manager/resource_manager.gd b/script/manager/resource_manager.gd index ccc01b6..7854610 100644 --- a/script/manager/resource_manager.gd +++ b/script/manager/resource_manager.gd @@ -12,6 +12,7 @@ var material_character_sub = load("res://render/material/character_sub.tres") #==effect== var particle_hit_sharp = load("res://scene/effect/particle/particle_hit_sharp.tscn") var particle_hit_blunt = load("res://scene/effect/particle/particle_hit_blunt.tscn") +var particle_hit_ground = load("res://scene/effect/particle/particle_hit_ground.tscn") #==config== #character