Strawberry Explosion

This commit is contained in:
Marco Giacomelli 2024-05-15 15:48:48 +02:00
commit b9d03efbb8
5 changed files with 42 additions and 6 deletions

View file

@ -7,9 +7,14 @@ public partial class fragola : RigidBody2D
[Signal] [Signal]
public delegate void HitEventHandler(); public delegate void HitEventHandler();
private AnimatedSprite2D _animatedSprite;
private bool _isAlive = true;
// Called when the node enters the scene tree for the first time. // Called when the node enters the scene tree for the first time.
public override void _Ready() public override void _Ready()
{ {
_animatedSprite = GetNode<AnimatedSprite2D>("./AnimatedSprite2D");
} }
// Called every frame. 'delta' is the elapsed time since the previous frame. // Called every frame. 'delta' is the elapsed time since the previous frame.
@ -20,15 +25,34 @@ public partial class fragola : RigidBody2D
private void _on_body_entered(Node body) private void _on_body_entered(Node body)
{ {
Debug.WriteLine("Collision"); Debug.WriteLine("Collision");
Hide();
EmitSignal(SignalName.Hit); EmitSignal(SignalName.Hit);
// Must be deferred as we can't change physics properties on a physics callback.
GetNode<CollisionShape2D>("CollisionShape2D").SetDeferred(CollisionShape2D.PropertyName.Disabled, true);
} }
private void _on_area_2d_area_entered(Area2D area) private void _on_area_2d_area_entered(Area2D area)
{ {
// Replace with function body. // Replace with function body.
Debug.WriteLine("Collision area"); Debug.WriteLine("Collision area");
EmitSignal(SignalName.Hit); 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>("CollisionShape2D").SetDeferred(CollisionShape2D.PropertyName.Disabled, true);
} }
} }

View file

@ -138,7 +138,6 @@ collision_layer = 2
collision_mask = 3 collision_mask = 3
script = ExtResource("1_m27vu") script = ExtResource("1_m27vu")
Speed = 2000 Speed = 2000
CrosshairDistance = 20.0
BulletScene = ExtResource("2_ov36d") BulletScene = ExtResource("2_ov36d")
Muzzle = NodePath("Muzzle") Muzzle = NodePath("Muzzle")
metadata/_edit_group_ = true metadata/_edit_group_ = true

View file

@ -6160,6 +6160,7 @@ script = ExtResource("6_t8ide")
[node name="Player" parent="." instance=ExtResource("2_8mh54")] [node name="Player" parent="." instance=ExtResource("2_8mh54")]
position = Vector2(7, 1) position = Vector2(7, 1)
CrosshairDistance = 10.0
[node name="ReferenceRect" type="ReferenceRect" parent="."] [node name="ReferenceRect" type="ReferenceRect" parent="."]
visible = false visible = false

View file

@ -9,12 +9,24 @@ public partial class Bullet : Area2D
private Vector2 _direction = Vector2.Right; private Vector2 _direction = Vector2.Right;
//public delegate void BulletHitEventHandler(Node Body);
//public event BulletHitEventHandler BulletHit;
// Called when the node enters the scene tree for the first time. // Called when the node enters the scene tree for the first time.
public override void _Ready() public override void _Ready()
{ {
//this.Connect("body_entered", new Callable(this, nameof(OnBodyEntered)));
} }
//private void OnBodyEntered(Node body)
//{
// When a body is entered, invoke the event and pass the collided body
// BulletHit?.Invoke(body);
// Then remove the bullet
// QueueFree();
//}
public void SetDirection(Vector2 direction) public void SetDirection(Vector2 direction)
{ {
var normalized = direction.Normalized(); var normalized = direction.Normalized();

View file

@ -55,7 +55,7 @@ public partial class PlayerMovement : CharacterBody2D
{ {
if (Input.IsActionJustPressed("shoot")) if (Input.IsActionJustPressed("shoot"))
{ {
Debug.WriteLine("Shoot"); //Debug.WriteLine("Shoot");
Bullet bullet = BulletScene.Instantiate<Bullet>(); Bullet bullet = BulletScene.Instantiate<Bullet>();
Owner.AddChild(bullet); Owner.AddChild(bullet);
bullet.Transform = Muzzle.GlobalTransform; bullet.Transform = Muzzle.GlobalTransform;