41 lines
688 B
C#
41 lines
688 B
C#
using Godot;
|
|
|
|
namespace AceField.Scripts;
|
|
|
|
public partial class Bullet : Area2D
|
|
{
|
|
[Export] public int PlayerId = 1;
|
|
|
|
[Export] public float Speed = 1500;
|
|
[Export] public double Damage = 8;
|
|
|
|
[Export] public Timer FreeTimer;
|
|
|
|
public override void _Ready()
|
|
{
|
|
FreeTimer.Timeout += QueueFree;
|
|
|
|
BodyEntered += body =>
|
|
{
|
|
if (body is Player player)
|
|
{
|
|
if (player.PlayerId == PlayerId) return;
|
|
player.TakeDamage(Damage);
|
|
}
|
|
|
|
if (body is Brick brick)
|
|
{
|
|
if (brick.PlayerId == PlayerId) return;
|
|
brick.DecayProgress--;
|
|
}
|
|
|
|
QueueFree();
|
|
};
|
|
}
|
|
|
|
public override void _PhysicsProcess(double delta)
|
|
{
|
|
Position += -Transform.Y * Speed * (float)delta;
|
|
}
|
|
}
|