rj-action-library/Runtime/Physics/Projectile.cs

59 lines
1.0 KiB
C#

using Godot;
using System.Collections;
using System.Collections.Generic;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class Projectile:CharacterBody3D
{
[Export]
public float speed = 0;
[Export]
public bool disableOnCollision = false;
[Export]
public bool disabled = false;
[Export]
public Collider collider;
[Export]
public Action onCollision;
[Export]
public bool runInEditor = false;
public override void _PhysicsProcess( double delta )
{
if ( disabled || ( Engine.IsEditorHint() && ! runInEditor ) )
{
return;
}
var velocity = this.GlobalForward() * speed * (float)delta;
var collision = MoveAndCollide( velocity );
if ( collision == null )
{
return;
}
if ( collider != null)
{
collider.TriggerOnCollisionEnter( this, collision );
}
Action.Trigger( onCollision );
if ( disableOnCollision )
{
disabled = true;
}
}
}
}