33 lines
741 B
GDScript
33 lines
741 B
GDScript
extends Control
|
|
|
|
@export var hp_animation_dur: float
|
|
|
|
var healthbar_full_size: Vector2
|
|
var hp_value: Panel
|
|
|
|
var hp_tween: Tween
|
|
|
|
func _ready():
|
|
healthbar_full_size = $HealthbarBase/HealthbarValue.size
|
|
hp_value = $HealthbarBase/HealthbarValue
|
|
|
|
|
|
## The amount is a value between 0..1
|
|
func set_health(a: float):
|
|
var f_pos: float = healthbar_full_size.y - (a * hp_value.size.y)
|
|
var user_favor: float = sin(a * PI) * 10
|
|
f_pos -= user_favor
|
|
f_pos = clamp(f_pos, 0, healthbar_full_size.y)
|
|
if hp_value.position.y == f_pos: return;
|
|
|
|
if hp_tween && hp_tween.is_running(): hp_tween.kill()
|
|
hp_tween = create_tween()
|
|
hp_tween.set_trans(Tween.TRANS_LINEAR)
|
|
|
|
hp_tween.tween_property(
|
|
hp_value,
|
|
"position:y",
|
|
f_pos,
|
|
hp_animation_dur
|
|
)
|