From 77f3d5e4a18be212f3a6ba71bacc6fa618d3f9d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sat, 6 Sep 2025 16:40:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=8A=80=E8=83=BD=E5=9B=BE=E6=A0=87):=20?= =?UTF-8?q?=E6=94=B9=E8=BF=9B=E5=86=B7=E5=8D=B4=E8=BF=9B=E5=BA=A6=E8=A7=86?= =?UTF-8?q?=E8=A7=89=E6=95=88=E6=9E=9C=E5=92=8C=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除进度值的clamp限制,允许超出范围效果 - 为冷却进度着色器添加边缘高光和拖尾效果 - 调整图标容器圆角和最小尺寸 - 更新材质参数以支持新的着色器效果 --- components/Abstracts/SkillIconBase.tscn | 12 +++++++----- scripts/Statemachine/SkillIcon.gd | 2 +- shaders/CooldownProgress.gdshader | 9 ++++++++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/components/Abstracts/SkillIconBase.tscn b/components/Abstracts/SkillIconBase.tscn index 216a63d..7002344 100644 --- a/components/Abstracts/SkillIconBase.tscn +++ b/components/Abstracts/SkillIconBase.tscn @@ -10,18 +10,20 @@ content_margin_top = 5.0 content_margin_right = 5.0 content_margin_bottom = 5.0 bg_color = Color(0, 0, 0, 0.5) -corner_radius_top_left = 15 -corner_radius_top_right = 15 -corner_radius_bottom_right = 15 -corner_radius_bottom_left = 15 +corner_radius_top_left = 20 +corner_radius_top_right = 20 +corner_radius_bottom_right = 20 +corner_radius_bottom_left = 20 [sub_resource type="ShaderMaterial" id="ShaderMaterial_ew32n"] shader = ExtResource("1_jaivk") shader_parameter/progress = 0.5 shader_parameter/backAlpha = 0.25 +shader_parameter/edgeHeight = 0.05 +shader_parameter/trailHeight = 0.3 [node name="SkillIconBase" type="PanelContainer"] -custom_minimum_size = Vector2(30, 30) +custom_minimum_size = Vector2(40, 40) offset_right = 30.0 offset_bottom = 30.0 theme_override_styles/panel = SubResource("StyleBoxFlat_a60wd") diff --git a/scripts/Statemachine/SkillIcon.gd b/scripts/Statemachine/SkillIcon.gd index 73d5074..203f68b 100644 --- a/scripts/Statemachine/SkillIcon.gd +++ b/scripts/Statemachine/SkillIcon.gd @@ -11,4 +11,4 @@ func _physics_process(_delta): if is_instance_valid(weapon): textureRect.texture = weapon.avatarTexture var progress = weapon.cooldownTimer.timeSinceLastStart() / weapon.cooldownTimer.cooldown - textureRect.material.set_shader_parameter("progress", clamp(progress, 0, 1)) + textureRect.material.set_shader_parameter("progress", progress) diff --git a/shaders/CooldownProgress.gdshader b/shaders/CooldownProgress.gdshader index c5527c2..b83b99a 100644 --- a/shaders/CooldownProgress.gdshader +++ b/shaders/CooldownProgress.gdshader @@ -1,9 +1,16 @@ shader_type canvas_item; -uniform float progress:hint_range(0.0, 1.0, 0.01)=0.5; +uniform float progress:hint_range(0.0, 2.0, 0.01)=0.5; uniform float backAlpha:hint_range(0.0, 1.0, 0.01)=0.25; +uniform float edgeHeight:hint_range(0.0, 1.0, 0.01)=0.05; +uniform float trailHeight:hint_range(0.0, 1.0, 0.01)=0.3; void fragment() { COLOR=texture(TEXTURE,UV); if(UV.y>=progress){ COLOR.a*=backAlpha; + }else if(distance(UV.y,progress)