From 5c2dcabe48d3f3b2915b5ae899e89831cca3ad61 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Thu, 8 Feb 2024 02:31:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=97=E5=87=BB=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/character/battle.gd | 7 ++++--- script/character/buff.gd | 4 +++- script/character/character.gd | 1 + script/character/effect.gd | 18 +++++++++++------- script/character/status.gd | 1 + script/character/view.gd | 2 +- 6 files changed, 21 insertions(+), 12 deletions(-) diff --git a/script/character/battle.gd b/script/character/battle.gd index 1bd2b12..716e033 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -74,6 +74,7 @@ func settle(hit_info:HitInfo) -> bool: var is_block = false var is_kill = false var is_break_skill = false + var pause_time = attack.pause_time #造成伤害 var damage = attack.damage_rate * cfg_from.attack @@ -171,11 +172,11 @@ func settle(hit_info:HitInfo) -> bool: character_to.add_buff("flash_white",0.1) #卡帧 - character_from.add_buff("pause",attack.pause_time) - character_to.add_buff("pause",attack.pause_time) + character_from.set_pause_time(pause_time) + character_to.set_pause_time(pause_time) #全局特效 - Global.camera_mgr.effect(attack.pause_time) + Global.camera_mgr.effect(pause_time) #伤害跳字 character_to.show_hit_damage(damage) diff --git a/script/character/buff.gd b/script/character/buff.gd index c10821e..952f33f 100644 --- a/script/character/buff.gd +++ b/script/character/buff.gd @@ -145,7 +145,9 @@ func on_start_flash_white(rate):status.flash_white_rate = 1 func on_update_flash_white(rate):status.flash_white_rate = 1 - rate func on_end_flash_white(rate):status.flash_white_rate = 0 -func on_update_shake_x(rate):status.shake_offset = Vector3((sin(rate * PI * 5) - 0.5)*0.06,0,0); +func on_update_shake_x(rate): + var shake_rate = 0.5 * status.pause_time + status.shake_offset = Vector3((sin(rate * PI * 5) - 0.5)*shake_rate,0,0); func on_end_shake_x(rate):status.shake_offset = Vector3.ZERO func on_start_deformation(rate):status.deformation_rate = 1; diff --git a/script/character/character.gd b/script/character/character.gd index 1a24b88..5b9d38f 100644 --- a/script/character/character.gd +++ b/script/character/character.gd @@ -86,6 +86,7 @@ func add_buff(buff_name:String,duration:float,ignore_pause:bool=false):buff.add_ func remove_buff(buff_name:String):buff.remove_buff(buff_name) func has_buff(buff_name:String)->bool:return buff.has_buff(buff_name) func set_hit_move(hit_back_dir:Vector2,hit_back_speed:float,hit_up_speed:float):status.hit_back_dir = hit_back_dir;status.hit_back_speed = hit_back_speed;status.hit_up_speed = hit_up_speed +func set_pause_time(pause_time:float):status.pause_time=pause_time;add_buff("pause",pause_time) func cancel_skill():skill.cancel_skill() func set_view_trigger(trigger_name:String):status.set("trigger_%s"%trigger_name,true) func add_attack(from:int,dir:Vector2,attack:AttackCfg):battle.add_attack(from,dir,attack) diff --git a/script/character/effect.gd b/script/character/effect.gd index 5efea50..69c2a3a 100644 --- a/script/character/effect.gd +++ b/script/character/effect.gd @@ -14,9 +14,15 @@ class_name Effect var rediness : Decal var is_pause : bool var is_right : bool -var particle_list = [] var temp_release_particle_list = [] +func particle_list(): + var ret = [] + for child in get_children(): + if child is Particle: + ret.append(child) + return ret + func init(type:Enum.ECharacterType ,body_scale:Vector3): match type: Enum.ECharacterType.Player:rediness = readiness_hero.instantiate() @@ -36,17 +42,17 @@ func _process(delta): #flip if is_right != status.is_right: is_right = status.is_right - for particle:Particle in particle_list: + for particle:Particle in particle_list(): particle.scale.x = 1 if is_right else -1 #pause if is_pause != status.is_pause: is_pause = status.is_pause - for particle:Particle in particle_list: + var ret = particle_list() + for particle:Particle in ret: particle.set_pause(is_pause) if !is_pause: for particle:Particle in temp_release_particle_list: _release_effect(particle) - particle_list.erase(particle) temp_release_particle_list.clear() func cast_image(res:Resource): @@ -87,14 +93,12 @@ func _cast_particle(resource:Resource ,is_attach:bool): new_particle.scale.x = abs(new_particle.scale.x) * (1 if is_right else -1) new_particle.position = status.basic_offset add_child(new_particle) - particle_list.append(new_particle) if !is_attach: temp_release_particle_list.append(new_particle) func release_effect(): - for particle:Particle in particle_list: + for particle:Particle in particle_list(): _release_effect(particle) - particle_list.clear() func _release_effect(particle:Particle): particle.set_pause(false) diff --git a/script/character/status.gd b/script/character/status.gd index 3fc5935..b2533df 100644 --- a/script/character/status.gd +++ b/script/character/status.gd @@ -56,6 +56,7 @@ class_name Status @export var hit_back_dir : Vector2 #击退方向 @export var hit_back_speed : float #击退速度 @export var hit_up_speed : float #击飞速度 +@export var pause_time : float #卡帧时间 @export_category("技能状态") @export var skill_cfg : SkillCfg #当前技能 diff --git a/script/character/view.gd b/script/character/view.gd index 3fe1500..2f73806 100644 --- a/script/character/view.gd +++ b/script/character/view.gd @@ -77,11 +77,11 @@ func _process(delta): if not status.is_skill_running and status.is_pause == is_playing(): if status.is_pause:pause() else:play_animation(animation) + update_view() if status.is_pause:return update_flip() update_trans(false) update_material() - update_view() func init(default:SpriteFrames): sprite_frames = default