diff --git a/scenes/collectables/Energy.cs b/scenes/collectables/Energy.cs index 52a993b..a3a36c7 100644 --- a/scenes/collectables/Energy.cs +++ b/scenes/collectables/Energy.cs @@ -4,11 +4,12 @@ using System; public class Energy : Area2D { private Event _eventBus; + private AnimatedSprite _sprite; public override void _Ready() { _eventBus = GetNode("/root/Event"); - GetNode("AnimatedSprite").Play(); + _sprite = GetNode("AnimatedSprite"); } public void OnEnergyBodyEntered(Node body) @@ -22,4 +23,14 @@ public class Energy : Area2D } QueueFree(); } + + public void OnVisibilityNotifier2DScreenEntered() + { + _sprite.Play(); + } + + public void OnVisibilityNotifier2DScreenExited() + { + _sprite.Stop(); + } } diff --git a/scenes/collectables/Energy.tscn b/scenes/collectables/Energy.tscn index 5c11984..33dc607 100644 --- a/scenes/collectables/Energy.tscn +++ b/scenes/collectables/Energy.tscn @@ -20,7 +20,7 @@ animations = [ { } ] [sub_resource type="RectangleShape2D" id=4] -extents = Vector2( 2.5, 6.5 ) +extents = Vector2( 2.5, 5.75 ) [node name="Energy" type="Area2D"] collision_layer = 8 @@ -29,10 +29,16 @@ script = ExtResource( 2 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="."] frames = SubResource( 3 ) animation = "glow" +centered = false [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -visible = false -position = Vector2( -0.5, -0.5 ) +position = Vector2( 7.5, 7.25 ) shape = SubResource( 4 ) +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( 14, 11 ) +rect = Rect2( -10, -10, 7, 13 ) + [connection signal="body_entered" from="." to="." method="OnEnergyBodyEntered"] +[connection signal="screen_entered" from="VisibilityNotifier2D" to="." method="OnVisibilityNotifier2DScreenEntered"] +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="OnVisibilityNotifier2DScreenExited"]