diff --git a/scripts/droppable-items/DropMover.cs b/scripts/droppable-items/DropMover.cs new file mode 100644 index 0000000..12dbbdd --- /dev/null +++ b/scripts/droppable-items/DropMover.cs @@ -0,0 +1,30 @@ +using Godot; + +public partial class DropMover : Node +{ + public float ySpeed = -200.0f; + public float xSpeed = 150.0f; + + + private float stop_y; + private Node2D parent; + private Vector2 velocity; + private float gravity; + public override void _Ready() + { + parent = GetParent(); + stop_y = ((parent.GlobalPosition / FieldParams.Tile).Ceil() * FieldParams.Tile).Y; + gravity = (float)ProjectSettings.GetSetting("physics/2d/default_gravity"); + + velocity = new Vector2((GD.Randf()-0.5f)*xSpeed,ySpeed); + } + public override void _Process(double delta) + { + if (parent.GlobalPosition.Y >= stop_y) QueueFree(); + + velocity += Vector2.Down * gravity * (float)delta; + + parent.GlobalPosition += velocity * (float)delta; + } + +} diff --git a/scripts/entities/plants/PlantSunSpawner.cs b/scripts/entities/plants/PlantSunSpawner.cs index d320d79..2cbefc5 100644 --- a/scripts/entities/plants/PlantSunSpawner.cs +++ b/scripts/entities/plants/PlantSunSpawner.cs @@ -13,9 +13,13 @@ public partial class PlantSunSpawner : Node2D public void Spawn() { var sun = _sunScene.Instantiate(); + sun.amount = _amountPerSun; PoolContainer.Instance.Projectiles.AddChild(sun); sun.GlobalPosition = GlobalPosition; + + var mover = new DropMover(); + sun.AddChild(mover); } }