1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-29 07:21:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Statemachine/DamageLabel.gd
T
fallingshrimp e7476d2c47 feat(战斗系统): 添加完美闪避窗口并本地化伤害标签
添加完美闪避窗口参数,用于调整触发完美闪避的速度阈值
将伤害标签中的"MISS"和"PERFECT MISS"本地化为中文"闪避"和"完美闪避"
2025-09-07 14:29:11 +08:00

43 lines
1.4 KiB
GDScript

extends Node2D
class_name DamageLabel
@export var damage: float = 0
@export var crit: bool = false
@export var color1: Color = Color(1, 0, 0, 1)
@export var color2: Color = Color(0, 1, 0, 1)
@export var color3: Color = Color(0.5, 0.5, 0.5, 1)
@export var color4: Color = Color.YELLOW
@onready var label: Label = $"%label"
@onready var animator: AnimationPlayer = $"%animator"
func _ready():
label.label_settings = label.label_settings.duplicate()
var damageValue = round(abs(damage))
var damageSign = sign(damage)
if damageSign > 0:
label.label_settings.font_color = color1
label.text = "%s%s" % [damageValue, "!!!" if crit else ""]
elif damageSign < 0:
label.label_settings.font_color = color2
label.text = "+%s%s" % [damageValue, "!!!" if crit else ""]
else:
if crit:
label.label_settings.font_color = color4
label.text = "完美闪避"
else:
label.label_settings.font_color = color3
label.text = "闪避"
animator.play("show")
await animator.animation_finished
queue_free()
static func create(spawnDamage: float, spawnCrit: bool, spawnPosition: Vector2, addToWorld: bool = true) -> DamageLabel:
var instance = preload("res://components/UI/DamageLabel.tscn").instantiate()
instance.damage = spawnDamage
instance.crit = spawnCrit
instance.position = spawnPosition
if addToWorld:
WorldManager.rootNode.add_child(instance)
return instance