using Godot; using System; using System.Diagnostics; public partial class Fragola : RigidBody2D { [Signal] public delegate void HitEventHandler(); private AnimatedSprite2D _animatedSprite; private bool _isAlive = true; // Called when the node enters the scene tree for the first time. public override void _Ready() { _animatedSprite = GetNode("./AnimatedSprite2D"); } // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { } private void _on_body_entered(Node body) { Debug.WriteLine("Collision"); EmitSignal(SignalName.Hit); } private void _on_area_2d_area_entered(Area2D area) { // Replace with function body. Debug.WriteLine("Collision area"); EmitSignal(SignalName.Hit); if (_isAlive) { Explode(); } } private void Explode() { _isAlive = false; _animatedSprite.Play("explode"); //Hide(); DisableCollision(); } private void DisableCollision() { // Must be deferred as we can't change physics properties on a physics callback. GetNode("CollisionShape2D").SetDeferred(CollisionShape2D.PropertyName.Disabled, true); } }