2023-11-20 09:35:59 +00:00
|
|
|
using Godot;
|
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
public partial class Laser : Area2D
|
|
|
|
|
{
|
|
|
|
|
[Export]
|
|
|
|
|
public int Speed { get; set;} = 500;
|
|
|
|
|
|
|
|
|
|
public Vector2 MovementVector { get; set; } = new Vector2(0, -1);
|
|
|
|
|
|
|
|
|
|
|
2023-12-08 14:21:45 +00:00
|
|
|
private void _on_visible_on_screen_notifier_2d_screen_exited()
|
|
|
|
|
{
|
2023-11-20 09:35:59 +00:00
|
|
|
QueueFree();
|
|
|
|
|
}
|
2023-12-08 14:21:45 +00:00
|
|
|
public override void _PhysicsProcess(double delta)
|
|
|
|
|
{
|
2023-11-20 09:35:59 +00:00
|
|
|
GlobalPosition += MovementVector.Rotated(Rotation) * Speed * (float)delta;
|
|
|
|
|
}
|
2023-12-08 14:21:45 +00:00
|
|
|
private void OnAreaEntered(Area2D area)
|
|
|
|
|
{
|
|
|
|
|
if (area is asteroid)
|
|
|
|
|
{
|
|
|
|
|
asteroid a = (asteroid)area;
|
|
|
|
|
a.Explode();
|
|
|
|
|
QueueFree();
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-11-20 09:35:59 +00:00
|
|
|
}
|