受击优化

master
chendian 2 years ago
parent 107c54cc56
commit 5c2dcabe48

@ -74,6 +74,7 @@ func settle(hit_info:HitInfo) -> bool:
var is_block = false var is_block = false
var is_kill = false var is_kill = false
var is_break_skill = false var is_break_skill = false
var pause_time = attack.pause_time
#造成伤害 #造成伤害
var damage = attack.damage_rate * cfg_from.attack 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_to.add_buff("flash_white",0.1)
#卡帧 #卡帧
character_from.add_buff("pause",attack.pause_time) character_from.set_pause_time(pause_time)
character_to.add_buff("pause",attack.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) character_to.show_hit_damage(damage)

@ -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_update_flash_white(rate):status.flash_white_rate = 1 - rate
func on_end_flash_white(rate):status.flash_white_rate = 0 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_end_shake_x(rate):status.shake_offset = Vector3.ZERO
func on_start_deformation(rate):status.deformation_rate = 1; func on_start_deformation(rate):status.deformation_rate = 1;

@ -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 remove_buff(buff_name:String):buff.remove_buff(buff_name)
func has_buff(buff_name:String)->bool:return buff.has_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_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 cancel_skill():skill.cancel_skill()
func set_view_trigger(trigger_name:String):status.set("trigger_%s"%trigger_name,true) 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) func add_attack(from:int,dir:Vector2,attack:AttackCfg):battle.add_attack(from,dir,attack)

@ -14,9 +14,15 @@ class_name Effect
var rediness : Decal var rediness : Decal
var is_pause : bool var is_pause : bool
var is_right : bool var is_right : bool
var particle_list = []
var temp_release_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): func init(type:Enum.ECharacterType ,body_scale:Vector3):
match type: match type:
Enum.ECharacterType.Player:rediness = readiness_hero.instantiate() Enum.ECharacterType.Player:rediness = readiness_hero.instantiate()
@ -36,17 +42,17 @@ func _process(delta):
#flip #flip
if is_right != status.is_right: if is_right != status.is_right:
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 particle.scale.x = 1 if is_right else -1
#pause #pause
if is_pause != status.is_pause: if is_pause != status.is_pause:
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) particle.set_pause(is_pause)
if !is_pause: if !is_pause:
for particle:Particle in temp_release_particle_list: for particle:Particle in temp_release_particle_list:
_release_effect(particle) _release_effect(particle)
particle_list.erase(particle)
temp_release_particle_list.clear() temp_release_particle_list.clear()
func cast_image(res:Resource): 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.scale.x = abs(new_particle.scale.x) * (1 if is_right else -1)
new_particle.position = status.basic_offset new_particle.position = status.basic_offset
add_child(new_particle) add_child(new_particle)
particle_list.append(new_particle)
if !is_attach: if !is_attach:
temp_release_particle_list.append(new_particle) temp_release_particle_list.append(new_particle)
func release_effect(): func release_effect():
for particle:Particle in particle_list: for particle:Particle in particle_list():
_release_effect(particle) _release_effect(particle)
particle_list.clear()
func _release_effect(particle:Particle): func _release_effect(particle:Particle):
particle.set_pause(false) particle.set_pause(false)

@ -56,6 +56,7 @@ class_name Status
@export var hit_back_dir : Vector2 #击退方向 @export var hit_back_dir : Vector2 #击退方向
@export var hit_back_speed : float #击退速度 @export var hit_back_speed : float #击退速度
@export var hit_up_speed : float #击飞速度 @export var hit_up_speed : float #击飞速度
@export var pause_time : float #卡帧时间
@export_category("技能状态") @export_category("技能状态")
@export var skill_cfg : SkillCfg #当前技能 @export var skill_cfg : SkillCfg #当前技能

@ -77,11 +77,11 @@ func _process(delta):
if not status.is_skill_running and status.is_pause == is_playing(): if not status.is_skill_running and status.is_pause == is_playing():
if status.is_pause:pause() if status.is_pause:pause()
else:play_animation(animation) else:play_animation(animation)
update_view()
if status.is_pause:return if status.is_pause:return
update_flip() update_flip()
update_trans(false) update_trans(false)
update_material() update_material()
update_view()
func init(default:SpriteFrames): func init(default:SpriteFrames):
sprite_frames = default sprite_frames = default

Loading…
Cancel
Save