锁定优化

master
chendian 10 months ago
parent 1a77a19782
commit 9f1ce2da8b

@ -22,4 +22,6 @@ mp = ExtResource("2_wo8op")
hp_max = 100.0 hp_max = 100.0
attack = 10.0 attack = 10.0
sub_character = ExtResource("7_vfx1h") sub_character = ExtResource("7_vfx1h")
sub_character_auto_create = true sub_character_auto_create = false
material_on = 0
material_off = 0

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -63,7 +63,7 @@ func update_speed_y(delta) -> void:
func update_move(delta): func update_move(delta):
var move_velocity: Vector2 = status.move_dir.normalized() * (status.cfg.move.speed * (1 + status.speed_up_rate)) var move_velocity: Vector2 = status.move_dir.normalized() * (status.cfg.move.speed * (1 + status.speed_up_rate))
var skill_velocity: Vector2 = status.skill_dir * status.skill_move_speed if not status.skill_move_stop else Vector2.ZERO var skill_velocity: Vector2 = status.skill_move_dir * status.skill_move_speed if not status.skill_move_stop else Vector2.ZERO
var hit_back_velocity: Vector2 = status.hit_back_dir * status.hit_back_speed var hit_back_velocity: Vector2 = status.hit_back_dir * status.hit_back_speed
move_velocity += skill_velocity + hit_back_velocity move_velocity += skill_velocity + hit_back_velocity
status.speed_dir = Vector2(move_velocity.x, move_velocity.y) status.speed_dir = Vector2(move_velocity.x, move_velocity.y)

@ -95,6 +95,12 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = ""):
var target: Character = Global.character_mgr.get_character(status.target) var target: Character = Global.character_mgr.get_character(status.target)
if target: if target:
cast_dir = character.pos2D().direction_to(target.pos2D()).normalized() cast_dir = character.pos2D().direction_to(target.pos2D()).normalized()
var skill_move_dir: Vector2 = cast_dir
if cfg.is_lock_x:
cast_dir.y = 0
cast_dir = cast_dir.normalized()
if cast_dir.length() == 0:
cast_dir = Vector2.RIGHT if status.is_right else Vector2.LEFT
break_skill() break_skill()
status.speed_up_rate = -1 status.speed_up_rate = -1
@ -103,6 +109,7 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = ""):
status.is_skill_running = true status.is_skill_running = true
status.skill_cfg = cfg status.skill_cfg = cfg
status.skill_dir = cast_dir status.skill_dir = cast_dir
status.skill_move_dir = skill_move_dir
status.break_level = Enum.EBreakLevel.None status.break_level = Enum.EBreakLevel.None
status.stance = cfg.stance_to status.stance = cfg.stance_to
status.is_charging = cfg.is_charging status.is_charging = cfg.is_charging

@ -69,6 +69,7 @@ var pause_time: float #卡帧时间
var skill_cfg: SkillCfg #当前技能 var skill_cfg: SkillCfg #当前技能
var is_skill_running: bool #技能是否正在释放 var is_skill_running: bool #技能是否正在释放
var skill_dir: Vector2 #技能释放方向 var skill_dir: Vector2 #技能释放方向
var skill_move_dir: Vector2 #技能位移方向
@export var skill_move_speed: float #技能位移速度 @export var skill_move_speed: float #技能位移速度
@export var skill_float_speed: float #技能y位移速度 @export var skill_float_speed: float #技能y位移速度
@export var skill_move_stop: bool #技能位移速度是否停止生效 @export var skill_move_stop: bool #技能位移速度是否停止生效

@ -19,6 +19,7 @@ class_name SkillCfg
@export var mp_cost: int @export var mp_cost: int
@export var warn_type: Enum.ESkillWarnType = Enum.ESkillWarnType.None @export var warn_type: Enum.ESkillWarnType = Enum.ESkillWarnType.None
@export var with_stop: bool = false @export var with_stop: bool = false
@export var is_lock_x: bool = true
@export var refresh_animation: bool: @export var refresh_animation: bool:
get: return false get: return false

@ -104,4 +104,3 @@ func get_enemy_list(id: int) -> Array[Character]:
if character.team() != target.team(): if character.team() != target.team():
ret.append(character) ret.append(character)
return ret return ret

Loading…
Cancel
Save