38 lines
1 KiB
GDScript
38 lines
1 KiB
GDScript
extends StaticBody2D
|
|
|
|
@export var scale_up_target: Vector2 = Vector2(1.0, 1.0)
|
|
@export var scale_down_target: Vector2 = Vector2(0.5, 0.5)
|
|
@export var scale_duration: float = 0.5
|
|
@export var ui_actions: Node
|
|
@export var small_sprite = preload("res://textures/block-orange.png")
|
|
@export var large_sprite = preload("res://textures/block-blue.png")
|
|
@export var delete_self = false
|
|
|
|
func _ready():
|
|
add_to_group("scalable_blocks")
|
|
|
|
func _process(delta):
|
|
change_sprite_based_on_scale()
|
|
|
|
func scale_up():
|
|
var tween = create_tween()
|
|
tween.tween_property(self, "scale", scale_up_target, scale_duration)
|
|
change_sprite_based_on_scale()
|
|
if delete_self:
|
|
queue_free()
|
|
|
|
|
|
func scale_down():
|
|
var tween = create_tween()
|
|
tween.tween_property(self, "scale", scale_down_target, scale_duration)
|
|
change_sprite_based_on_scale()
|
|
if delete_self:
|
|
queue_free()
|
|
|
|
func change_sprite_based_on_scale():
|
|
var sprite = $Sprite2D
|
|
|
|
if scale == Vector2(0.5, 0.5):
|
|
sprite.texture = small_sprite
|
|
elif scale == Vector2(1.0, 1.0):
|
|
sprite.texture = large_sprite
|