fix(presentation): 界面补数批——血量数字「当前/最大」落条(HUD框架 验收「血量数字可读」欠账+用户点名,白字深描边居中条带)+小人脚浮修正(素材透明留白致视觉脚悬空 12.75px,offset -16→-8.5 坐标推导留档)+台账 178
This commit is contained in:
1 parent
af3cddd61e
commit
9e6f06804e
3 files changed
+16
-3
No files matched your search
@@ -49,7 +49,10 @@ func ensure_hero(tex: Texture2D, shadow_px: Vector2, scale: float) -> Sprite2D:
|
||||
hero.texture = tex
|
||||
hero.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
|
||||
hero.centered = true
|
||||
hero.offset = Vector2(0.0, -16.0) # 纹理中点上移半高——position = 脚底中点
|
||||
# 脚浮修正(2026-09-26,样张预筛发现+用户实机确认的登记缺陷——台账 169/175 移交):素材底部 7 行全透明
|
||||
#(内容底 = 源 row 24,自中心 16-7.5=8.5px),旧 offset -16 按纹理底=内容底假设成立时脚悬空 8.5×1.5≈12.75px;
|
||||
# 修正 offset.y = -8.5 → 内容底恰落 position(脚锚=格底往上 25% 线,台账 162 口径——头仍越上格沿)
|
||||
hero.offset = Vector2(0.0, -8.5) # 纹理中心上移 8.5 源 px——position = 视觉脚底中点
|
||||
hero.z_index = 1
|
||||
hero.use_parent_material = true
|
||||
add_child(hero)
|
||||
|
||||
@@ -48,6 +48,7 @@ var _enemy_id := ""
|
||||
var _armor := "light"
|
||||
var _dead := false
|
||||
var _hp_max := 1.0
|
||||
var _hp_cur := 0 # 血量数字显示面(HUD框架 验收「血量数字可读」——2026-09-26 用户点名补数)
|
||||
var hp_value := 1.0: # 血条值 0..1(直角递减——tween_property 目标,逐行刷新重启不累积)
|
||||
set(v):
|
||||
hp_value = clampf(v, 0.0, 1.0)
|
||||
@@ -108,7 +109,8 @@ func set_hero(hp: int, max_hp: int) -> void:
|
||||
|
||||
# 血条短 tween 递减(直角递减占位——密度/缓动终稿归战斗表现批);逐行刷新时重启 tween 不累积
|
||||
func _set_hp(hp: int) -> void:
|
||||
var target := float(clampi(hp, 0, int(_hp_max))) / _hp_max
|
||||
_hp_cur = clampi(hp, 0, int(_hp_max))
|
||||
var target := float(_hp_cur) / _hp_max
|
||||
if _hp_tween != null and _hp_tween.is_valid():
|
||||
_hp_tween.kill()
|
||||
_hp_tween = create_tween()
|
||||
@@ -309,6 +311,13 @@ func _draw() -> void:
|
||||
var fill_w := bar_w * hp_value
|
||||
if fill_w > 0.0:
|
||||
draw_rect(Rect2(bar_x, 2, fill_w, 10), Color(0.41, 0.61, 0.91)) # 直角填充(默认主题蓝近似——直角递减)
|
||||
# 血量数字「当前/最大」居中压条(白字+深描边双通道——11px 于 10px 条带垂直居中;
|
||||
# 数字=目标值即时刷新,条 tween 只管填充宽度;死残位 0/max 照常可读)
|
||||
var hp_txt := "%d/%d" % [_hp_cur, int(_hp_max)]
|
||||
var hts: Vector2 = f.get_string_size(hp_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 11)
|
||||
var hbase := Vector2(bar_x + (bar_w - hts.x) * 0.5, 2.0 + 5.0 + 4.0)
|
||||
f.draw_string(get_canvas_item(), hbase + Vector2(1, 1), hp_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 11, Color(0.10, 0.08, 0.06, 0.85))
|
||||
f.draw_string(get_canvas_item(), hbase, hp_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 11, Color(1, 1, 1, 0.95))
|
||||
|
||||
# 立绘:贴图在位 = Sprite2D(set_portrait_texture 落位);缺位 = 字形回退
|
||||
if _portrait_sprite == null or _portrait_sprite.texture == null or not _portrait_sprite.visible:
|
||||
|
||||
Reference in new issue
Block a user