Guest User

Decent Solution

a guest
Sep 29th, 2025
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
GDScript 1.97 KB | Source Code | 0 0
  1. extends Button
  2.  
  3. @export var content: Label
  4. @export var hover_scale: Vector2
  5. @export_range(0.0, 2.0, 0.02) var hover_anim_duration: float
  6. @export_range(0.0, 2.0, 0.02) var hover_anim_mult: float
  7. @export_range(0.0, 2.0, 0.02) var text_anim_duration: float
  8.  
  9. var init_size: Vector2
  10. var init_pos: Vector2
  11. var final_pos: Vector2
  12. var pivot_movement: Vector2
  13.  
  14. var cont_init_pos: Vector2
  15. var cont_init_color: Color
  16.  
  17. func _ready() -> void:
  18.     init_size = size
  19.     init_pos = global_position
  20.    
  21.     cont_init_pos = content.global_position
  22.     cont_init_color = content.label_settings.font_color
  23.    
  24.     mouse_entered.connect(button_entered)
  25.     mouse_exited.connect(button_exited)
  26. #   pressed.connect(button_pressed)
  27.  
  28. func button_entered():
  29.     var tween:= create_tween()
  30.     tween.tween_property(self, "custom_minimum_size", init_size * hover_scale, hover_anim_duration).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_EXPO)
  31.     tween.parallel()
  32.  
  33.     ## Label Tweens ##
  34.     tween.tween_property(content, "global_position", cont_init_pos, hover_anim_duration).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_EXPO)
  35.     tween.parallel()
  36.     tween.tween_property(content.label_settings, "font_color", Color.hex(0xffffffff), text_anim_duration).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_LINEAR)
  37.  
  38. func button_exited():
  39.     var tween:= create_tween()
  40.     tween.tween_property(self, "custom_minimum_size", init_size, hover_anim_duration).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_EXPO)
  41.     tween.parallel()
  42.  
  43.     ## Label Tweens ##
  44.     tween.tween_property(content, "global_position", cont_init_pos, hover_anim_duration).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_EXPO)
  45.     tween.parallel()
  46.     tween.tween_property(content.label_settings, "font_color", cont_init_color, text_anim_duration).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_LINEAR)
  47.  
  48. func button_pressed():
  49.     pass
  50.  
  51. func _process(delta: float) -> void:
  52.     pivot_movement = (init_size * hover_scale) - init_size
  53.     final_pos = init_pos - pivot_movement / 2.0
Advertisement
Add Comment
Please, Sign In to add comment