diff --git a/config/player_skill/hero01_long_flash.tres b/config/player_skill/hero01_long_flash.tres index 6d9d9ae..577f2ac 100644 --- a/config/player_skill/hero01_long_flash.tres +++ b/config/player_skill/hero01_long_flash.tres @@ -15,6 +15,7 @@ action = "flash" name = "" skill_animation = ExtResource("2_bdxlh") attack_list = Array[Resource("res://script/config/attack_cfg.gd")]([]) +free_lock = true refresh_animation = false sprite_frams = ExtResource("2_uof6p") animation_name = "long_flash" diff --git a/script/character/character.gd b/script/character/character.gd index f4e5785..ee41d06 100644 --- a/script/character/character.gd +++ b/script/character/character.gd @@ -73,6 +73,7 @@ func height()->float:return status.height func view_pos()->Vector3:return position + view.position func ui_pos()->Vector3:return position + status.ui_offset func ui_pos_center()->Vector3:return position + status.ui_center_offset +func target()->int:return status.target #==interface== func get_status(status_name:String):return status.get_status(status_name) diff --git a/script/character/skill.gd b/script/character/skill.gd index 65b4841..423ada1 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -1,6 +1,7 @@ extends AnimationPlayer class_name Skill +@onready var character = (get_owner() as Character) @onready var view = (%View as View) @onready var status = (%Status as Status) @onready var effect = (%Effect as Effect) @@ -17,6 +18,10 @@ func cast_skill(cfg:SkillCfg,cast_dir:Vector2): cancel_skill() if cast_dir.length() == 0: cast_dir = Vector2.RIGHT if status.is_right else Vector2.LEFT + if !cfg.free_lock and status.target: + var target = Global.character_mgr.get_character(status.target) + if target: + cast_dir = character.pos2D().direction_to(target.pos2D()).normalized() var animation_name = "animation_library/%s" % Util.get_resource_name(cfg) if has_animation(animation_name): diff --git a/script/config/skill_cfg.gd b/script/config/skill_cfg.gd index aa1be6c..ee884cd 100644 --- a/script/config/skill_cfg.gd +++ b/script/config/skill_cfg.gd @@ -7,6 +7,7 @@ class_name SkillCfg @export var skill_animation : Animation @export var attack_list : Array[AttackCfg] @export var attack_particle : PackedScene +@export var free_lock : bool @export var refresh_animation : bool : get:return false diff --git a/script/manager/character_manager.gd b/script/manager/character_manager.gd index d24dd9e..08dd287 100644 --- a/script/manager/character_manager.gd +++ b/script/manager/character_manager.gd @@ -46,9 +46,13 @@ func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3): func destroy_character(id:int): if not id in character_map: return - var character = character_map[id] as Character + var character_destroy = character_map[id] as Character + character_destroy.queue_free() character_map.erase(id) - character.queue_free() + for key in character_map: + var character = character_map[key] as Character + if character.target() == id: + character.set_target(0) func get_character(id:int) -> Character: if id in character_map: