mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
feat(技能图标): 添加技能冷却显示功能
- 新增 SkillIcon.gd 脚本用于管理武器技能图标显示 - 修改 CooldownProgress.gdshader 增加背景透明度参数 - 更新 CooldownTimer.gd 添加时间计算方法 - 重构 SkillIconBase.tscn 场景以支持新功能
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://ufl4kek8hrmt"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://ufl4kek8hrmt"]
|
||||
|
||||
[ext_resource type="Shader" path="res://shaders/CooldownProgress.gdshader" id="1_jaivk"]
|
||||
[ext_resource type="Script" path="res://scripts/Statemachine/SkillIcon.gd" id="1_l7say"]
|
||||
[ext_resource type="Texture2D" uid="uid://cp4ypuarjoshp" path="res://resources/skillIcons/purple-crystal.png" id="2_hh1bl"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a60wd"]
|
||||
@@ -16,15 +17,18 @@ corner_radius_bottom_left = 15
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ew32n"]
|
||||
shader = ExtResource("1_jaivk")
|
||||
shader_parameter/progress = 0.58
|
||||
shader_parameter/progress = 0.25
|
||||
shader_parameter/backAlpha = 0.25
|
||||
|
||||
[node name="SkillIconBase" type="PanelContainer"]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
offset_right = 30.0
|
||||
offset_bottom = 30.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_a60wd")
|
||||
script = ExtResource("1_l7say")
|
||||
|
||||
[node name="icon" type="TextureRect" parent="."]
|
||||
[node name="texture" type="TextureRect" parent="."]
|
||||
unique_name_in_owner = true
|
||||
material = SubResource("ShaderMaterial_ew32n")
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_hh1bl")
|
||||
|
||||
@@ -4,9 +4,11 @@ var cooldown: float = 100
|
||||
var lastStart: int = 0
|
||||
|
||||
func isCooldowned():
|
||||
return WorldManager.getTime() - lastStart >= cooldown
|
||||
return timeSinceLastStart() >= cooldown
|
||||
func start():
|
||||
var state = isCooldowned()
|
||||
if state:
|
||||
lastStart = WorldManager.getTime()
|
||||
return state
|
||||
func timeSinceLastStart():
|
||||
return WorldManager.getTime() - lastStart
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
extends PanelContainer
|
||||
|
||||
@export var weapon: Weapon = null;
|
||||
|
||||
@onready var textureRect = $"%texture"
|
||||
|
||||
func _physics_process(_delta):
|
||||
if is_instance_valid(weapon):
|
||||
textureRect.texture = weapon.avatarTexture
|
||||
textureRect.material.set_shader_parameter("progress", clamp(weapon.cooldownTimer.timeSinceLastStart() / weapon.cooldownTimer.cooldown, 0, 1))
|
||||
@@ -1,8 +1,9 @@
|
||||
shader_type canvas_item;
|
||||
uniform float progress:hint_range(0.0, 1.0, 0.01)=0.5;
|
||||
uniform float backAlpha:hint_range(0.0, 1.0, 0.01)=0.25;
|
||||
void fragment() {
|
||||
COLOR=texture(TEXTURE,UV);
|
||||
if(UV.y>=progress){
|
||||
COLOR.a*=0.5;
|
||||
COLOR.a*=backAlpha;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user