Topic was automatically imported from the old Question2Answer platform.
Asked By
samjmiller
Hello everyone,
I am using this (admittedly very old) tutorial from Kids Can Code, trying to add a tween effect to gems when they get collected. I know the tutorial uses an old version of GDScript, but have been mostly successful in figuring out how to find and update errors from the outdated script.
But when I run this function:
func _on_gem_area_enter( area ):
if area.get_name() == "player":
emit_signal("gem_grabbed")
clear_shapes()
effect.start()
I get the error message “The method clear_shapes isn’t declared in the current class,” which crashes the game when I try to play it. I tried looking for that method in the documentation so I can declare it, but found no trace. If I replace clear_shapes() with queue_free() the game will play normally and the gems will disappear upon collection, but the tween animation doesn’t happen.
I believe this would do something similar to setting monitoring and monitorable to false. You can also try to use queue_free() on your sprite and connecting the Tween’s timeout signal to a queue_free in the Area2D.
Thank you for this, but it doesn’t appear to be helping - I just can’t get any tween animation to happen!
Here’s the full script attached to my gem scene. Is there something else I’m missing? (again, clear_shapes crashes the game when I try to play it; it will only run if I comment out clear_shapes)
extends Area2D
onready var effect = get_node("effect")
onready var sprite = get_node("Sprite")
signal gem_grabbed
func _ready():
effect.interpolate_property(sprite, 'transform/scale',
sprite.get_scale(), Vector2(4.0, 4.0), 0.3,
Tween.TRANS_QUAD, Tween.EASE_OUT)
func _on_gem_area_entered(area):
print(area.get_name())
if area.get_name() == 'player':
emit_signal("gem_grabbed")
clear_shapes()
queue_free()
func _on_effect_tween_complete( object, key ):
queue_free()