cirnogodot/Scripts/Interactables/ItemDrop.cs

32 lines
912 B
C#
Raw Permalink Normal View History

2025-03-23 16:39:47 +01:00
using Cirno.Scripts.Resources;
using Godot;
namespace Cirno.Scripts.Interactables;
public partial class ItemDrop : RigidBody2D
{
[Export] public LootItem ItemToDrop { get; set; }
[Export] public float StartingSpeed { get; set; } = 40f;
private RandomNumberGenerator _rng = new();
public override void _Ready()
{
var dropInstance = ItemToDrop.Spawn(this, true);
//Node dropInstance = dropScene.Instantiate();
//AddChild(dropInstance);
CallDeferred(MethodName.DelayedAddOwner, dropInstance);
2025-03-23 16:39:47 +01:00
float angle = _rng.RandfRange(0, Mathf.Tau); // 0 to 2π
Vector2 direction = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)).Normalized();
// Apply impulse in that direction
ApplyImpulse(direction * StartingSpeed);
}
private void DelayedAddOwner(Node2D node)
{
node.Owner = this;
}
2025-03-23 16:39:47 +01:00
}