拳套空中攻击 击落特效

master
chendian 2 years ago
parent 6929c597b1
commit 8ec81d307c

@ -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

@ -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)

@ -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"

@ -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"

@ -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"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

@ -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"
}]
}

@ -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"
}]
}

@ -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"
}]
}

@ -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]
}

@ -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"),

@ -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")

@ -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

@ -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)

@ -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")]

@ -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 {

@ -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)

@ -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):

@ -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):

@ -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)

@ -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

Loading…
Cancel
Save