0 votes

Trying to animate a PanelContainer with a Tween in and out of screen (in this example between 0 and 200 y position), where going away is slow (5 sec) and going in fast (1 sec).

For some reason calling tween stop_all does not interrupt a currently running animation, as seen here https://imgur.com/a/9wlriIT. If the slow animation is interrupted it is resumed as soon as the fast animation is completed. Only after the slow animation is done can the quick animation complete and stay at the target position.

Scene structure and code (script of Node):

Node
- PanelContainer
- - Label
- Tween

extends Node

onready var tween = get_node("Tween")
onready var node = get_node("PanelContainer")
onready var msg = get_node("PanelContainer/Label")

func _input(event):
    if event.is_action_pressed("ui_down"):
        go_in()
        msg.text = "down"

    elif event.is_action_pressed("ui_up"):
        go_away(5.0)
        msg.text = "up"

func go_in(duration=.5):
    tween.stop_all()
    tween.interpolate_property(node, "rect_position:y", node.rect_position.y, 200, duration, Tween.TRANS_LINEAR, Tween.EASE_OUT)
    tween.start()

func go_away(duration=1.0):
    tween.stop_all()
    var rect_position_y = 0
    tween.interpolate_property(node, "rect_position:y", node.rect_position.y, rect_position_y, duration, Tween.TRANS_LINEAR, Tween.EASE_OUT)
    tween.start()
Godot version v3.4.beta3
in Engine by (46 points)

Please log in or register to answer this question.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.