25 lines
831 B
GDScript
25 lines
831 B
GDScript
extends Sprite3D
|
|
|
|
const UP_DURATION := 0.1
|
|
const HOLD_DURATION := 0.05
|
|
const DOWN_DURATION := 0.18
|
|
|
|
var _rest_position: Vector3
|
|
var _tween: Tween
|
|
|
|
@onready var _button: Node3D = get_parent().get_node("ElevatorButton")
|
|
|
|
func _ready() -> void:
|
|
_rest_position = position
|
|
EventBus.block_pressed.connect(_animate_press)
|
|
|
|
func _animate_press() -> void:
|
|
if not is_instance_valid(_button):
|
|
return
|
|
if _tween and _tween.is_valid():
|
|
_tween.kill()
|
|
var press_pos := Vector3(_rest_position.x, _button.position.y, _rest_position.z)
|
|
_tween = create_tween()
|
|
_tween.tween_property(self, "position", press_pos, UP_DURATION).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
|
|
_tween.tween_interval(HOLD_DURATION)
|
|
_tween.tween_property(self, "position", _rest_position, DOWN_DURATION).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN)
|