From 72957ab1447287883436a5dd9bcd502c4959ee91 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Wed, 4 Oct 2023 10:38:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=80=E8=83=BD=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/player_skill/hero01_long_attack01.tres | 4 +- config/player_skill/hero01_long_attack02.tres | 4 +- config/player_skill/hero01_long_attack03.tres | 4 +- config/player_skill/hero01_long_attack04.tres | 4 +- config/player_skill/hero01_long_skill01.tres | 4 +- .../skill_animation/hero01_long_attack01.tres | 4 +- scene/character/player.tscn | 3 ++ script/_global/enum.gd | 2 +- script/_global/setting.gd | 2 +- script/character/move.gd | 1 - script/character/player/combo.gd | 45 +++++++++++-------- script/character/player/input.gd | 4 +- script/config/player_skill_cfg.gd | 3 +- script/config/skill_cfg.gd | 1 - 14 files changed, 49 insertions(+), 36 deletions(-) diff --git a/config/player_skill/hero01_long_attack01.tres b/config/player_skill/hero01_long_attack01.tres index c10fc30..4a70b8b 100644 --- a/config/player_skill/hero01_long_attack01.tres +++ b/config/player_skill/hero01_long_attack01.tres @@ -10,10 +10,10 @@ script = ExtResource("1_gik08") weapon = ExtResource("4_id85o") stance_from = 0 stance_to = 1 -action = "light_attack" +break_level = 3 +action = "attack_light" name = "" skill_animation = ExtResource("2_6nbpq") -break_level = 2 has_animation = false sprite_frams = ExtResource("3_og1bb") animation_name = "long_attack01" diff --git a/config/player_skill/hero01_long_attack02.tres b/config/player_skill/hero01_long_attack02.tres index 15fc960..7020dc2 100644 --- a/config/player_skill/hero01_long_attack02.tres +++ b/config/player_skill/hero01_long_attack02.tres @@ -10,10 +10,10 @@ script = ExtResource("1_e0fqi") weapon = ExtResource("4_novna") stance_from = 1 stance_to = 2 -action = "light_attack" +break_level = 3 +action = "attack_light" name = "" skill_animation = ExtResource("2_jrgan") -break_level = 2 has_animation = false sprite_frams = ExtResource("3_jidy7") animation_name = "long_attack02" diff --git a/config/player_skill/hero01_long_attack03.tres b/config/player_skill/hero01_long_attack03.tres index 30ec02d..b7254c5 100644 --- a/config/player_skill/hero01_long_attack03.tres +++ b/config/player_skill/hero01_long_attack03.tres @@ -10,10 +10,10 @@ script = ExtResource("1_uaib7") weapon = ExtResource("2_8uqiw") stance_from = 2 stance_to = 3 -action = "light_attack" +break_level = 3 +action = "attack_light" name = "" skill_animation = ExtResource("2_ugt3f") -break_level = 2 has_animation = true sprite_frams = ExtResource("3_sr2og") animation_name = "long_attack03" diff --git a/config/player_skill/hero01_long_attack04.tres b/config/player_skill/hero01_long_attack04.tres index 4b9a46f..19e8a38 100644 --- a/config/player_skill/hero01_long_attack04.tres +++ b/config/player_skill/hero01_long_attack04.tres @@ -10,10 +10,10 @@ script = ExtResource("1_xsxbs") weapon = ExtResource("4_plyre") stance_from = 3 stance_to = 4 -action = "light_attack" +break_level = 3 +action = "attack_light" name = "" skill_animation = ExtResource("2_sam6s") -break_level = 2 has_animation = true sprite_frams = ExtResource("3_w7h1m") animation_name = "long_attack04" diff --git a/config/player_skill/hero01_long_skill01.tres b/config/player_skill/hero01_long_skill01.tres index d01ef2a..00943c9 100644 --- a/config/player_skill/hero01_long_skill01.tres +++ b/config/player_skill/hero01_long_skill01.tres @@ -10,10 +10,10 @@ script = ExtResource("1_ud5ph") weapon = ExtResource("4_3bf64") stance_from = 1 stance_to = 2 -action = "heavy_attack" +break_level = 3 +action = "attack_heavy" name = "" skill_animation = ExtResource("2_ewts2") -break_level = 2 has_animation = true sprite_frams = ExtResource("3_qwjfl") animation_name = "long_skill01" diff --git a/resource/skill_animation/hero01_long_attack01.tres b/resource/skill_animation/hero01_long_attack01.tres index c0d0185..eab8b70 100644 --- a/resource/skill_animation/hero01_long_attack01.tres +++ b/resource/skill_animation/hero01_long_attack01.tres @@ -48,8 +48,8 @@ tracks/3/path = NodePath("Status:break_level") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0, 0.5, 0.7), +"times": PackedFloat32Array(0, 0.3, 0.7), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [0, 2, 4] +"values": [0, 3, 4] } diff --git a/scene/character/player.tscn b/scene/character/player.tscn index 711dfd1..5b04159 100644 --- a/scene/character/player.tscn +++ b/scene/character/player.tscn @@ -6,6 +6,9 @@ [node name="Character" instance=ExtResource("1_bny0p")] +[node name="Status" parent="." index="1"] +break_level = 0 + [node name="Input" type="Node3D" parent="." index="5"] script = ExtResource("2_qkra8") diff --git a/script/_global/enum.gd b/script/_global/enum.gd index 7eea46f..be93623 100644 --- a/script/_global/enum.gd +++ b/script/_global/enum.gd @@ -9,4 +9,4 @@ enum EStance { None = 99, Any = 100, } -enum EBreakLevel {None, Cancel, Jump, Combo, Walk} #不可打断 取消技打断 跳跃打断 连招打断 行走打断 +enum EBreakLevel {None, Cancel, Jump, Break, Walk} #不可打断 取消技打断 跳跃打断 连招打断 行走打断 diff --git a/script/_global/setting.gd b/script/_global/setting.gd index f91689c..8613fdb 100644 --- a/script/_global/setting.gd +++ b/script/_global/setting.gd @@ -5,4 +5,4 @@ const pixel_size : float = 0.01 const sprite_scale : float = 1.414 #技能系统 -const input_alive_time : float = 0.2 +const input_alive_time : float = 0.5 diff --git a/script/character/move.gd b/script/character/move.gd index a83b16f..96ab3e0 100644 --- a/script/character/move.gd +++ b/script/character/move.gd @@ -23,7 +23,6 @@ func update_gravity(delta): character.velocity.y -= gravity * delta * status.cfg.move.gravity_scale status.speed_y = character.velocity.y - func update_move(): var input_dir = status.move_dir var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() diff --git a/script/character/player/combo.gd b/script/character/player/combo.gd index b6f56fa..3d9ea63 100644 --- a/script/character/player/combo.gd +++ b/script/character/player/combo.gd @@ -38,40 +38,47 @@ func update_break(): Enum.EBreakLevel.None: pass Enum.EBreakLevel.Cancel: update_break_cancel() Enum.EBreakLevel.Jump: update_break_jump() - Enum.EBreakLevel.Combo: update_break_combo() + Enum.EBreakLevel.Break: update_break_break() Enum.EBreakLevel.Walk: update_break_walk() func update_break_cancel(): update_break_by_level(Enum.EBreakLevel.Cancel) func update_break_jump(): - var index = input_list.find("jump") - if index == -1: - return - refresh_input(index) - skill.cancel_skill() - move.jump() + for i in range(0,len(input_list)): + var input = input_list[i] + if input.action == "jump": + refresh_input(i) + skill.cancel_skill() + move.jump() + return -func update_break_combo(): - update_break_by_level(Enum.EBreakLevel.Combo) +func update_break_break(): + update_break_by_level(Enum.EBreakLevel.Break) func update_break_walk(): - if status.input_dir.length() > 0: + if status.is_skill_running and status.input_dir.length() > 0: refresh_input(len(input_list)) skill.cancel_skill() func update_break_by_level(break_level:Enum.EBreakLevel): for i in range(0,len(input_list)): var input = input_list[i] - var skillCfgList = [] + var skill_cfg_list = [] if input.action in skill_map: - skillCfgList.append_array(skill_map[input.action]) + skill_cfg_list.append_array(skill_map[input.action]) if "any" in skill_map: - skillCfgList.append_array(skill_map["any"]) - for skillCfg in skillCfgList: - if skillCfg.break_level == break_level: - skill.cast_skill(skillCfg,status.input_dir) - refresh_input(i) + skill_cfg_list.append_array(skill_map["any"]) + for skill_cfg in skill_cfg_list: + var player_skill_cfg = skill_cfg as PlayerSkillCfg + if player_skill_cfg.break_level != break_level: + continue + if player_skill_cfg.stance_from != status.stance: + continue + skill.cast_skill(skill_cfg,status.input_dir) + status.stance = player_skill_cfg.stance_to + refresh_input(i) + return func refresh_input(index:int): if index >= len(input_list)-1: @@ -82,6 +89,8 @@ func refresh_input(index:int): func update_move(): if status.is_free_control: status.move_dir = status.input_dir + status.stance = Enum.EStance.Idle if status.is_on_floor else Enum.EStance.AirIdle + status.break_level = Enum.EBreakLevel.Walk func add_input_action(action:String): var new_input = InputData.new() @@ -89,7 +98,7 @@ func add_input_action(action:String): new_input.alive_time = Setting.input_alive_time input_list.append(new_input) -func add_skill(action:String,skillCfg:SkillCfg): +func add_skill(action:String,skillCfg:PlayerSkillCfg): if not action in skill_map: skill_map[action] = [] skill_map[action].append(skillCfg) diff --git a/script/character/player/input.gd b/script/character/player/input.gd index f7c9019..48da78d 100644 --- a/script/character/player/input.gd +++ b/script/character/player/input.gd @@ -9,7 +9,9 @@ func _ready(): SignalManager.connect("input_action_move",on_input_action_move) func on_input_action_pressed(event:InputEvent): - combo.add_input_action(event.as_text()) + for action_name in InputMap.get_actions(): + if event.is_action(action_name): + combo.add_input_action(action_name) func on_input_action_released(event:InputEvent): pass diff --git a/script/config/player_skill_cfg.gd b/script/config/player_skill_cfg.gd index 15fa5e9..d140813 100644 --- a/script/config/player_skill_cfg.gd +++ b/script/config/player_skill_cfg.gd @@ -6,4 +6,5 @@ class_name PlayerSkillCfg @export var weapon : WeaponCfg @export var stance_from : Enum.EStance @export var stance_to : Enum.EStance -@export_enum("light_attack","heavy_attack","flash") var action : String = "light_attack" +@export var break_level : Enum.EBreakLevel = Enum.EBreakLevel.Break +@export_enum("attack_light","attack_heavy","flash") var action : String = "attack_light" diff --git a/script/config/skill_cfg.gd b/script/config/skill_cfg.gd index c8bb1ed..f546177 100644 --- a/script/config/skill_cfg.gd +++ b/script/config/skill_cfg.gd @@ -5,7 +5,6 @@ class_name SkillCfg @export var name : String @export var skill_animation : Animation -@export var break_level : Enum.EBreakLevel = Enum.EBreakLevel.Combo var _has_animation : bool @export var has_animation : bool :