DomeFox/DomeFox/Game Objects/Laser/ShootLaser.cs

49 lines
1.0 KiB
C#

using Godot;
using Rokojori;
[Tool,GlobalClass]
public partial class ShootLaser: Action
{
[Export]
public PackedScene laserScene;
[Export]
public Node3D projectileOrigin;
[Export]
public float speed = 1f;
[Export]
public Node container;
[Export]
public float forwardFollowDistanceScale = 1.5f;
[Export]
public float yOffset = -5;
protected override void _OnTrigger()
{
var cam = Unique<Camera3D>.Get();
var distance = projectileOrigin.DistanceTo( cam );
var aim = cam.GlobalForward() * forwardFollowDistanceScale + cam.GlobalPosition;
aim.Y += yOffset;
var dir = projectileOrigin.DirectionTowards( aim ).Normalized();
var laserScene = this.laserScene.Instantiate();
laserScene.SetParent( container );
var laserBeam = laserScene.Get<LaserBeam>();
var projectile = laserBeam.body;
projectile.GlobalPosition = projectileOrigin.GlobalPosition;
projectile.LookTowards( dir );
projectile.speed = speed;
Action.Trigger( laserBeam );
}
}